button应该尽可能宽

我希望所有Button都适合文本,所以Button没有换行符,而且所有的Button都应该具有相同的宽度:宽度最大。

我在布局WRAP_CONTENT所有Button layout_width设置为WRAP_CONTENT ,实现了这一点:

 <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" /> ... </LinearLayout> 

然后我search最大的值,并设置所有的button大小相同:

 @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); ViewGroup layout = (ViewGroup) findViewById(R.id.layout); int size = 0; for (int i = 0; i < layout.getChildCount(); ++i) { View child = layout.getChildAt(i); if (child.getWidth() > size) { size = child.getWidth(); } } for (int i = 0; i < layout.getChildCount(); ++i) { LayoutParams params = layout.getChildAt(i).getLayoutParams(); params.width = size; layout.getChildAt(i).setLayoutParams(params); } } 

有没有更清洁,更优雅的解决scheme呢?

Solutions Collecting From Web of "button应该尽可能宽"

将所有button都包含在公共父元素中说明具有属性的元素为wrap_content,wrap_content。 使用属性Match_Parent作为button,现在以编程方式计算最大文本的大小并将其设置为父宽度,然后调用布局,这将确保它所包含的所有子节点都被有效地resize。

 <LinearLayout <!--Parent--> android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" > <!-- Child --> <Button android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> 

使用TableLayoutTableRow将让列(在这种情况下, Button )具有固定的宽度,取决于最大/最长的一个。 android:shrinkColumns用于在某些Buttons比屏幕宽度更长的情况下进行换行。

例:

 <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:shrinkColumns="0" > <TableRow> <Button android:text="Short" /> </TableRow> <TableRow> <Button android:text="Longer text" /> </TableRow> <TableRow> <Button android:text="Middle" /> </TableRow> </TableLayout> 

使用MatchParent而不是像下面的WrapContent

 <Button android:layout_width="match_parent" android:layout_height="match_parent" /> <Button android:layout_width="match_parent" android:layout_height="match_parent" /> 

希望这可以帮助!!!