1

我想创建一组相互对齐的 2by2 按钮,如下所示:

AB

光盘

无论内容的长度如何,每个都具有相同的宽度和高度。

我尝试将以下设置与嵌套的 LinearLayouts 一起使用,它符合我的要求,但是我收到了一条警告,说嵌套的 layout_weight 对性能有很大的(指数)影响。

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:baselineAligned="false">

    <LinearLayout android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="50"
        android:orientation="vertical">

        <Button
            android:id="@+id/buttonA"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="50"
            android:text="aaa"/>

        <Button
            android:id="@+id/buttonC"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="50"
            android:text="cccccccccccccccccccccccccccc"/>
    </LinearLayout>

    <LinearLayout android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="50"
        android:orientation="vertical">

        <Button
            android:id="@+id/buttonB"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="50"
            android:text="bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" />

        <Button
            android:id="@+id/buttonD"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="50"
            android:text="ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"/>
    </LinearLayout>
    </LinearLayout>

我想知道是否有更好的方法来做到这一点?谢谢!

4

2 回答 2

1

使用 aLinearLayout和 2并在每个 中TableRows插入 2 。根据您的需要进行分配。为包括 在内的每个项目分配1 ,您应该一切顺利。ButtonsTableRowwidthheightweightTableRows

编辑:好吧,玩了一会儿后,我发现这很好用;-)

这基本上是您自己的布局和我的布局的混合;-)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <TableRow
        android:id="@+id/tableRow1"
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1" >

        <Button
            android:id="@+id/button1"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="cccccccccccccccccccccccccccc" />

        <Button
            android:id="@+id/button2"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="Button" />
    </TableRow>

    <TableRow
        android:id="@+id/tableRow2"
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1" >

        <Button
            android:id="@+id/button3"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" />

        <Button
            android:id="@+id/button4"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd" />
    </TableRow>

</LinearLayout>
于 2013-04-10T17:55:41.247 回答
0

我还没有测试过,但你可以button.getWidth()用来获取 4 个按钮的宽度。找到 4 个中的最大值,然后将所有按钮设置为该宽度。如果按钮的内容是动态的。

于 2013-04-10T17:56:17.367 回答