Android - 在 LinearLayout 中设置按钮的最大宽度

问题描述 投票:0回答:2

我有 2 行按钮(在这个例子中只显示一行,只是为了节省空间),这就是为什么我有主要的 LinearLayout,然后是每个按钮行的内部 LinearLayout。

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true"
        android:gravity="center_vertical"
        android:orientation="vertical">

        <LinearLayout
            android:id="@+id/btnLL"
            android:layout_width="match_parent"
            android:layout_height="140dp"
            android:maxWidth="450dp"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:orientation="horizontal"
            android:weightSum="3">

            <Button
                android:id="@+id/btn1"
                style="?android:attr/borderlessButtonStyle"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="4dp"
                android:layout_weight="1"
                android:background="@drawable/mainbutton"
                android:drawableTop="@drawable/btn1"
                android:drawablePadding="-18dip"
                android:gravity="center"
                android:paddingTop="16dp"
                android:paddingEnd="4dp"
                android:singleLine="true"
                android:text="text"
                android:textColor="#eeeeee"
                android:textSize="15sp" />

                        <Button
                android:id="@+id/btn2"
                style="?android:attr/borderlessButtonStyle"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="4dp"
                android:layout_weight="1"
                android:background="@drawable/mainbutton"
                android:drawableTop="@drawable/btn2"
                android:drawablePadding="-18dip"
                android:gravity="center"
                android:paddingTop="16dp"
                android:paddingEnd="4dp"
                android:singleLine="true"
                android:text="text"
                android:textColor="#eeeeee"
                android:textSize="15sp" />

            <Button
                android:id="@+id/btn3"
                style="?android:attr/borderlessButtonStyle"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="4dp"
                android:layout_weight="1"
                android:background="@drawable/mainbutton"
                android:drawableTop="@drawable/btn3"
                android:drawablePadding="-18dip"
                android:gravity="center"
                android:paddingTop="16dp"
                android:paddingEnd="4dp"
                android:singleLine="true"
                android:text="text"
                android:textColor="#eeeeee"
                android:textSize="15sp" />
        </LinearLayout>

    </LinearLayout>

问题是例如在平板电脑上,每个按钮都太宽了。

我想限制每个按钮的宽度,但即使我尝试对每个按钮直接使用

android:maxWidth="110dp"
,它也会被忽略,因为按钮有
android:layout_weight="1"

正如您在我的代码中看到的那样,我尝试将

android:maxWidth="350dp"
用于内部 LinearLayout(也尝试将其用于主 LinearLayout),但没有帮助。

在我的案例中有没有办法限制按钮的宽度,或者限制 LinearLayout 本身的宽度?

android android-linearlayout
2个回答
0
投票

尝试以下步骤:

  1. 添加
    android:layout_weight
    属性
  2. 将每个按钮的
    android:layout_width
    设置为
    0dp
    .

现在为每个按钮设置所需的

android:maxWidth
值,然后修改权重值以在可用空间中均匀分布按钮。

示例代码:

<LinearLayout
    android:id="@+id/btnLL"
    android:layout_width="match_parent"
    android:layout_height="140dp"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp"
    android:orientation="horizontal"
    android:weightSum="3">

    <Button
        android:id="@+id/btn1"
        style="?android:attr/borderlessButtonStyle"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:background="@drawable/mainbutton"
        android:drawableTop="@drawable/btn1"
        android:drawablePadding="-18dip"
        android:gravity="center"
        android:paddingTop="16dp"
        android:paddingEnd="4dp"
        android:singleLine="true"
        android:text="text"
        android:textColor="#eeeeee"
        android:textSize="15sp"
        android:maxWidth="110dp" />

    <Button
        android:id="@+id/btn2"
        style="?android:attr/borderlessButtonStyle"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:background="@drawable/mainbutton"
        android:drawableTop="@drawable/btn2"
        android:drawablePadding="-18dip"
        android:gravity="center"
        android:paddingTop="16dp"
        android:paddingEnd="4dp"
        android:singleLine="true"
        android:text="text"
        android:textColor="#eeeeee"
        android:textSize="15sp"
        android:maxWidth="110dp" />

    <Button
        android:id="@+id/btn3"
        style="?android:attr/borderlessButtonStyle"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:background="@drawable/mainbutton"
        android:drawableTop="@drawable/btn3"
        android:drawablePadding="-18dip"
        android:gravity="center"
        android:paddingTop="16dp"
        android:paddingEnd="4dp"
        android:singleLine="true"
        android:text="text"
        android:textColor="#eeeeee"
        android:textSize="15sp"
        android:maxWidth="110dp" />

</LinearLayout>


0
投票

似乎唯一有帮助的是当我为内部 LinearLayout 设置

minWidth
maxWidth
时。现在可以使用了。

<LinearLayout
    android:id="@+id/btnLL"
    android:layout_width="wrap_content"
    android:layout_height="140dp"
    android:minWidth="350dp"
    android:maxWidth="450dp"
    android:layout_gravity="center_horizontal"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp"
    android:orientation="horizontal"
© www.soinside.com 2019 - 2024. All rights reserved.