我希望所有Button都适合文本,因此按钮中没有换行符,但所有Button应该具有相同的宽度:尽可能宽.
我通过在布局中将所有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>
然后我搜索最大值,并将所有按钮设置为相同大小:
@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); } }
对此有更清洁,更优雅的解决方案吗?
解决方法
换行,共同父项内的所有按钮说有一个属性为wrap_content,wrap_content的linearlayout.使用Match_Parent属性为您的按钮,现在以编程方式,您只需计算最大文本的大小并将其设置为父宽度,并在其上调用布局,这将确保它包含的所有子项有效调整大小.
<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>