如何为Android按钮设置固定宽度?每次我尝试设置固定宽度时,它都会填充当前父级(RelativeView)。这是我的XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/relativelayout" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
<EditText android:layout_height="wrap_content" android:editable="false" android:layout_width="fill_parent" android:id="@+id/output"></EditText>
<Button android:layout_height="wrap_content" android:id="@+id/Button01" android:layout_below="@id/output" android:text="7" android:layout_width="wrap_content"></Button>
<Button android:layout_below="@id/output" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/Button02" android:layout_toRightOf="@+id/Button01" android:text="8"></Button>
<Button android:layout_below="@id/output" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/Button03" android:layout_toRightOf="@+id/Button02" android:text="9"></Button>
</RelativeLayout>
我如何给它一个固定的宽度?
更新的
假设我有几个按钮,我想要彼此相同的尺寸和整个视图的1/3(肖像),然后我想要一个宽度加倍的按钮。然后是一个高度加倍的按钮。我怎么能完成另一个手动调整它们的尺寸呢?
答案 0 :(得分:12)
您可以使用固定像素大小而不是android:layout_width="wrap_content"
代替android:layout_width="20px"
或更好的方式:android:layout_width="20dp"
您还可以在代码中以编程方式设置宽度:Button.setWidth(int width)
关于您的更新:
我不知道这是不是一个好的解决方案,但我的工作。你可以用
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
读取屏幕分辨率,然后根据metrics.widthPixel和metrics.heightPixel设置按钮大小
答案 1 :(得分:12)
要完成您想要的任务,您可以使用具有权重的LinearLayout。例如,您可以将WeightSum设为9.如果您将三个按钮的重量分别设置为1。它们将占据该位置的1/3,您可以将2放置为另一个对象。这个对象将是另一个对象的两倍。
http://developer.android.com/reference/android/widget/LinearLayout.html#setWeightSum(float)
编辑:我想补充一点,为了使其正常工作,您必须将宽度或高度设置为0px(取决于它是水平布局还是垂直布局)。
答案 2 :(得分:6)
使用minWidth和minHeight设置按钮的宽度和高度。
<Button android:layout_height="wrap_content"
android:id="@+id/Button01"
android:layout_below="@id/output"
android:text="7"
android:minWidth="100dp">
</Button>
答案 3 :(得分:3)
动态设置按钮的最佳和最简单的方法是
Button index=new Button(this);
int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 45, getResources().getDisplayMetrics());
int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 42, getResources().getDisplayMetrics());
高度和宽度,以像素为单位 px 。 45是 dp 的高度,42是 dp 的宽度。
index.setLayoutParams(new <Parent>.LayoutParams(width, height));
因此,例如,如果您已将按钮放在TableLayout中的TableRow中,则应将其设置为TableRow.LayoutParams
index.setLayoutParams(new TableRow.LayoutParams(width, height));
答案 4 :(得分:0)
在该代码中添加android:minwidth
行。