我有 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:layout_weight
属性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>
似乎唯一有帮助的是当我为内部 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"