如何设置按钮高度小于30px?我尝试了下一个:
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,因为我不知道确切的宽度。我也尝试设置它的高度。是否可以将按钮包装成文本?
修改 使用TextView而不是Button解决了这个问题。当然,如果你没有使用Button.class中的特定/覆盖的东西。
答案 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));
}