Android 为什么按钮上的maxWidth不起作用以及如何解决它?
我在布局上有两个按钮,在大屏幕设备(平板电脑)上,我想限制它们的宽度,这样它们就不会显得可笑了。我希望使用maxWidth属性,但在我的场景中它显然没有任何作用。这里是布局定义-按钮使用了布局的全部宽度,忽略了maxWidth中的任何值Android 为什么按钮上的maxWidth不起作用以及如何解决它?,android,android-layout,android-button,Android,Android Layout,Android Button,我在布局上有两个按钮,在大屏幕设备(平板电脑)上,我想限制它们的宽度,这样它们就不会显得可笑了。我希望使用maxWidth属性,但在我的场景中它显然没有任何作用。这里是布局定义-按钮使用了布局的全部宽度,忽略了maxWidth中的任何值 <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizonta
<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>
为什么,以及如何解决这一(显然是疯狂的)限制?尝试设置版面宽度以包装内容与0dp。从两个按钮中删除
android:layout\u weight=“1”
行。
添加
android:minWidth=“50dp”
和android:layout\u width=“wrap\u content”
编辑:您需要根据屏幕大小手动计算按钮大小。首先,您需要设置一个标准屏幕大小。例如,如果您在屏幕宽度为400px的屏幕上开发应用程序,并且按钮宽度为100px,则在所有设备上保持相同的
按钮宽度与屏幕宽度之比的公式如下所示
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
buttonWidth = 100 * (metrics.widthPixels/400);
用例:
如果屏幕宽度=480px,则按钮宽度应为120px。宽度/高度似乎总是需要一起设置,。。在我看来,这是可行的
<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个按钮)解决此问题的好方法是为不同的屏幕分辨率组合创建多个布局。当达到某个最大拉伸时,在需要的地方创建一个具有固定值的新布局。请参阅中关于“使用版面别名”的部分,为什么按钮的版面宽度为0dp而不是包裹内容?@antlersoft-0dp宽度与与与兄弟元素的版面权重相匹配的版面权重相结合,将确保它们彼此的宽度相同这是我尝试过的许多变体之一。这没什么不同,为什么?然后,按钮将完全不缩放,并且宽度为零,这就是导致按钮拉伸以填充布局的整个宽度的原因。同时设置minwidth,并将宽度更改为wrap\u content
not 0dp。如果删除布局权重,按钮将无法缩放,这就是我希望它执行的操作。我想要一个按钮,它可以根据设备尺寸进行缩放,但只能缩放到最大尺寸。如果您对尺寸使用dp
,则可绘图设备将根据不同的密度自动缩放。你不能为不同的尺寸做这件事。我可以动态地做,但这是一个相当野蛮的方法。我希望能够说服框架按照我的预期工作。我将研究包含动态调整大小的子类化按钮,但也将研究如何使用各种布局变体来避免这种需要。