Android:如何为不等数量的按钮设置列宽?

时间:2015-06-17 15:20:02

标签: android width tablelayout

我有3列按钮,但列不包含相同数量的按钮。使所有按钮看起来大小相同的最佳做法是什么?我不想明确指定按钮宽度,我怀疑添加" dummy"按钮也是最好的。

<TableLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:stretchColumns="*"

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
        <Button
            android:layout_width="0dip"
            android:layout_weight="1"
            android:text="Button 1"
            android:id="@+id/button1" />
        <Button
            android:layout_width="0dip"
            android:text="Button 2"
            android:id="@+id/button2"
            android:layout_weight="1" />
        <Button
            android:layout_width="0dip"
            android:text="Button 3"
            android:id="@+id/button3"
            android:layout_weight="1"/>
    </TableRow>

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

        <Button
            android:layout_width="0dp"
            android:layout_weight="1"
            android:text="Button 5"
            android:id="@+id/button5"
            android:layout_column="3" />
    </TableRow>

</TableLayout>

2 个答案:

答案 0 :(得分:1)

这更像是一个数学问题。对于可扩展网格空间中的赔率(3)和偶数(2)的中心,您总共需要六个单元格布局。

这是解决方案(没有任何额外的视图,也没有使用布局权重):

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:stretchColumns="*">

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/button1"
            android:layout_width="match_parent"
            android:layout_column="0"
            android:layout_span="2"
            android:text="Button 1" />

        <Button
            android:id="@+id/button2"
            android:layout_width="match_parent"
            android:layout_column="2"
            android:layout_span="2"
            android:text="Button 2" />

        <Button
            android:id="@+id/button3"
            android:layout_width="match_parent"
            android:layout_column="4"
            android:layout_span="2"
            android:text="Button 3" />
    </TableRow>

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:layout_width="match_parent"
            android:id="@+id/button4"
            android:layout_column="1"
            android:layout_span="2"
            android:text="Button 4" />

        <Button
            android:id="@+id/button5"
            android:layout_width="match_parent"
            android:layout_column="3"
            android:layout_span="2"
            android:text="Button 5" />
    </TableRow>
</TableLayout>

答案 1 :(得分:0)

您可以像往常一样添加三个按钮,并隐藏最后一个按钮,如下所示

<TableLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:stretchColumns="*"

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
        <Button
            android:layout_width="0dip"
            android:layout_weight="1"
            android:text="Button 1"
            android:id="@+id/button1" />
        <Button
            android:layout_width="0dip"
            android:text="Button 2"
            android:id="@+id/button2"
            android:layout_weight="1" />
        <Button
            android:layout_width="0dip"
            android:text="Button 3"
            android:id="@+id/button3"
            android:layout_weight="1"/>
    </TableRow>

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
        <Button
            android:layout_width="0dip"
            android:layout_weight="1"
            android:text="Button 4"
            android:id="@+id/button4" />
        <Button
            android:layout_width="0dip"
            android:text="Button 5"
            android:id="@+id/button5"
            android:layout_weight="1" />
        <Button
            android:layout_width="0dip"
            android:text="Button 6"
            android:id="@+id/button6"
            android:layout_weight="1"
            android:visibility="invisible"/>
    </TableRow>

</TableLayout>