Android 为什么按钮上的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

我在布局上有两个按钮,在大屏幕设备(平板电脑)上,我想限制它们的宽度,这样它们就不会显得可笑了。我希望使用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>


为什么,以及如何解决这一(显然是疯狂的)限制?

尝试设置版面宽度以包装内容与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
,则可绘图设备将根据不同的密度自动缩放。你不能为不同的尺寸做这件事。我可以动态地做,但这是一个相当野蛮的方法。我希望能够说服框架按照我的预期工作。我将研究包含动态调整大小的子类化按钮,但也将研究如何使用各种布局变体来避免这种需要。