在Android中设置Button的宽度

我怎样才能为Androidbutton设置固定的宽度? 每次我尝试设置一个固定的宽度,它填充当前的父(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> 

我将如何给它一个固定的宽度?
UPDATE
说我有几个button,我想要相同的大小和整个视图(肖像)的1/3,然后我想要一个button的宽度的两倍。 然后是一个双倍高度的button。 我怎么能完成这个手动resize呢?

Related of "在Android中设置Button的宽度"

为了完成你想要的,你可以使用带有权重的LinearLayout。 例如,你可以把一个9的WeightSum。如果你把三个button的权重,每个1。 他们将占用1/3的地方,你可以把2换成另一个对象。 这个对象将是另一个的两倍。

http://developer.android.com/reference/android/widget/LinearLayout.html#setWeightSum(float&#xFF09;

编辑:我想补充说,为了正常工作,你必须设置宽度或高度为0px(取决于如果它是一个水平或垂直布局)。

而不是android:layout_width="wrap_content"你可以使用固定像素,比如android:layout_width="20px"或更好的方法: android:layout_width="20dp"

您还可以在代码中以编程方式设置宽度: Button.setWidth(int width)

关于你的更新:

我不知道这是否是一个好的解决scheme,但我工作。 你可以使用

  DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); 

读取屏幕分辨率,然后根据metrics.widthPixel和metrics.heightPixel设置button大小

使用minWidth和minHeight来设置button的宽度和高度。

 <Button android:layout_height="wrap_content" android:id="@+id/Button01" android:layout_below="@id/output" android:text="7" android:minWidth="100dp"> </Button> 

dynamic设置button的最好和最简单的方法是

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

高度和宽度(以像素为单位)。 45是dp的高度,42是dp的宽度。

  index.setLayoutParams(new <Parent>.LayoutParams(width, height)); 

所以,例如,如果你已经把你的button放在一个TableLayout的TableRow中,你应该把它作为TableRow.LayoutParams

  index.setLayoutParams(new TableRow.LayoutParams(width, height)); 

在该代码中添加android:minwidth行。