2

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


在此处输入图像描述


  1. 设置高度(30);(第 150 集有效,但第 30 集无效)
  2. setPadding(0,-20,0,-20); (宽度是变化的,高度是不变的)
  3. LinearLayout.LayoutParams(设置 150 工作,但设置 30 不工作)
  4. 新按钮(这个,空,android.R.attr.buttonStyleSmall);- 仅对按钮文本有影响

在此处输入图像描述


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);

在此处输入图像描述


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();
}

}

在此处输入图像描述

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

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

4

4 回答 4

12

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

于 2014-08-04T19:43:38.010 回答
1

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

但是,这可以在按钮的 xml 中被覆盖:

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

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

于 2013-06-20T10:01:05.580 回答
0

尝试这个

mainButton.setIncludeFontPadding(false);
于 2013-06-20T09:06:42.863 回答
0

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

如果你想用默认的drawable改变高度,你可以创建你的自定义按钮扩展按钮类并覆盖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));
    }
于 2013-06-20T09:18:13.993 回答