我在布局上有两个按钮,在大屏幕设备(平板电脑)上我想要限制它们的宽度,这样它们看起来并不荒谬。我希望使用maxWidth属性,但它在我的场景中显然没有任何作用。这是布局定义 - 按钮占用布局的整个宽度,忽略maxWidth中的任何值。
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:maxWidth="100dp"
android:text="Button 1"
/>
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:maxWidth="100dp"
android:text="Button 2"
/>
</LinearLayout>
为什么以及如何解决这个(显然是疯狂的)限制?
答案 0 :(得分:11)
从两个按钮中删除android:layout_weight="1"
行。
添加android:minWidth="50dp"
和android:layout_width="wrap_content"
编辑:
您需要根据屏幕尺寸手动计算按钮尺寸。首先,您需要设置标准屏幕尺寸。例如,如果您在宽度为400px的屏幕上开发应用程序,并且按钮宽度为100px,那么在所有设备上保持相同button width to screen width
比例的公式将如下所示
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
buttonWidth = 100 * (metrics.widthPixels/400);
使用案例:
如果屏幕宽度= 480px,则按钮宽度应为120px。
答案 1 :(得分:3)
解决这个问题的好方法是为不同的屏幕分辨率组合创建多个布局。当您达到某个最大拉伸时,创建一个在需要时具有固定值的新布局。请参阅http://developer.android.com/training/multiscreen/screensizes.html#TaskUseAliasFilters
中有关“使用布局别名”的部分答案 2 :(得分:0)
尝试将layout_width设置为wrap_content vs. 0dp。
答案 3 :(得分:0)
宽度/高度似乎总是要设置在一起,..这在我看来是
<Button
android:text="Center"
android:layout_width="100dp"
android:layout_height="fill_parent"
android:id="@+id/selectionCenterButton"
android:minWidth="50dp"
android:minHeight="50dp"
android:maxWidth="100dp"
android:maxHeight="50dp"
android:layout_weight="1" />
按钮的父级设置为包装内容,因此缩小,但最多400宽(4个按钮)