Android按钮高度(以编程方式)

时间:2013-06-20 08:36:45

标签: android button layout

如何设置按钮高度小于30px?我尝试了下一个:


enter image description here


  1. 自动调用setHeight(30); (设置150正在工作,但设置30不是)
  2. setPadding(0,-20,0,-20); (宽度是变化,高度不是)
  3. LinearLayout.LayoutParams(设置150正在运行,但设置30不是)
  4. new Button(this,null,android.R.attr.buttonStyleSmall); - 仅对按钮文字产生影响

  5. enter image description here


    Button mainButton = new Button(this);
    mainButton.setPadding(0, 0, 0, 0);
    mainButton.setLayoutParams(new LayoutParams(FlowLayout.LayoutParams.WRAP_CONTENT,FlowLayout.LayoutParams.WRAP_CONTENT));
    l.addView(mainButton);
    

    enter image description here


    SmallButton mainButton = new SmallButton(this);
            mainButton.setText(s);
            mainButton.setBackgroundResource(R.drawable.button_drawable);
            mainButton.setLayoutParams(new LayoutParams(FlowLayout.LayoutParams.WRAP_CONTENT,FlowLayout.LayoutParams.WRAP_CONTENT));
            l.addView(mainButton);
    
    public class SmallButton extends Button {
    
    public SmallButton(Context context) {
        super(context);
    }
    
    public SmallButton(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    
    public SmallButton(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }
    
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
         super.onMeasure(widthMeasureSpec,MeasureSpec.makeMeasureSpec(MeasureSpec.EXACTLY, 35));
    }
    
     @Override
    protected void onDraw(Canvas canvas) {
        canvas.save();
        canvas.translate(0,-5);
        super.onDraw(canvas);
        canvas.restore();
    }
    

    }

    enter image description here

    我的背景有一个渐变的Shape,因为我不知道确切的宽度。我也尝试设置它的高度。是否可以将按钮包装成文本?

    修改 使用TextView而不是Button解决了这个问题。当然,如果你没有使用Button.class中的特定/覆盖的东西。

4 个答案:

答案 0 :(得分:7)

有两个参数。 Button.setMinimumHeight()和Button.setMinHeight()。确保将它们都设置为值“0”。

答案 1 :(得分:1)

Android中的每个View都可以为它们设置最小宽度和高度。 Button将根据它正在使用的设备上使用的样式设置这些。

但是,这可以在按钮的xml中重写:

android:minHeight="0dip"
android:minWidth="0dip"

正如@Sudar Nimalan所指出的,这与按钮的背景有关。如果您不想创建自己的按钮类,则可以将背景设置为更小的尺寸。尝试将背景设置为纯色,或为其创建自己的背景。

答案 2 :(得分:0)

试试这个

mainButton.setIncludeFontPadding(false);

答案 3 :(得分:0)

我认为,这导致由于默认背景可绘制的最小高度大小,您可以发送空背景或颜色并测试这些场景。

如果要使用默认的drawable更改高度,可以创建扩展Button类的自定义按钮,并覆盖onMeasure和onDraw等。

覆盖onDraw以移动默认按钮绘图:

onDraw(canvas){
     canvas.save();
     canvas.translate(0,value to shift);
     super.onDraw(canves);
     canvas.restore();
}


@Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
         super.onMeasure(widthMeasureSpec,MeasureSpec.makeMeasureSpec(MeasureSpec.EXACTLY, 35));
    }