【发布时间】:2014-08-05 03:43:38
【问题描述】:
如何将按钮高度设置为小于 30px?我尝试了下一个:
- 设置高度(30); (第 150 集有效,但第 30 集无效)
- setPadding(0,-20,0,-20); (宽度变化,高度不变)
- LinearLayout.LayoutParams(设置 150 有效,但设置 30 无效)
- new Button(this, null, 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 中的特定/覆盖的东西。
【问题讨论】:
-
如果您希望按钮高度仅包裹其文本,只需将 padding 设置为 0 并使用
android:layout_height = "wrap_content",它将在函数中将高度与您的按钮内容包裹起来 -
我编辑了我的问题。我试过了,它不起作用。它只影响宽度而不影响高度。
-
为什么不从 xml 布局中添加按钮? ?你的按钮的父级及其布局参数是什么?
-
我无法从 xml 添加按钮,因为它们是随机生成的。父布局为FlowLayout,参数为:height-wrap_content、widht-match_parent。我也对 LinearLayout 进行了同样的尝试,但也没有帮助(我不认为父布局效果)。
-
但它的布局参数可能会影响:),如果您为 FlowLayout 设置一些边距和填充,并将宽度或高度设置为固定大小。添加生成父级和按钮的完整代码