1

用例:

我有一个水平视图 H,其中包含 5 个按钮(A、B、C、D 和 E);所有在 H 中占据相等的空间。现在取决于某些业务逻辑,每个按钮可能会或可能不会可见。如果一个按钮是不可见的,其余的按钮应该同样对齐。

现在的问题是,如果我为每个按钮赋予特定的权重,那么我必须编写 2^5 个 if-else 案例来为按钮分配单独的权重。Android中没有办法让所有这些按钮对齐它们自己占据相等的空间。确切地说,这个想法是只写 5 个案例,其中我使按钮可见或不可见,其余视图自行对齐。我不能使用换行内容,因为这些按钮包含不同长度的文本,我希望按钮占用相等的空间而不是文本。

有没有办法做到这一点?我将非常感谢这里的任何帮助。

4

2 回答 2

3

为所有按钮分配相同的权重(例如 1),但不要将权重总和分配给容器。现在,当您需要隐藏一个按钮时,将其可见性设置为GONE,其他按钮将调整大小以占用可用空间。

于 2013-08-20T08:06:36.473 回答
0
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/white"
    android:orientation="vertical" >

    <Button
        android:layout_width="fill_parent"
        android:layout_weight="1" />

    <Button
        android:layout_width="fill_parent"
        android:layout_weight="1" />

    <Button
        android:layout_width="fill_parent"
        android:layout_weight="1"
        android:visibility="gone" />

</LinearLayout>

现在,如果您将第三个按钮设置为可见,其他两个按钮将调整大小以在屏幕上显示 3 个按钮。水平布局中的相同视图:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/white"
    android:orientation="horizontal" >

    <Button
        android:layout_height="fill_parent"
        android:layout_weight="1" />

    <Button
        android:layout_height="fill_parent"
        android:layout_weight="1" />

    <Button
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:visibility="gone" />

</LinearLayout>
于 2013-08-20T08:05:00.903 回答