如何在表格布局中应用行跨度?

Posted

技术标签:

【中文标题】如何在表格布局中应用行跨度?【英文标题】:How to apply row span in tablelayout? 【发布时间】:2013-04-14 02:57:27 【问题描述】:

如何将row_span应用于TableLayout?

我想做一些类似这张图片的东西,但我不知道怎么做。

制作这样的东西的正确方法是什么?

【问题讨论】:

似乎是重复的***.com/questions/2189986/… 不重复。这不是我问的问题的答案。 你有解决办法吗 【参考方案1】:

小作弊(代码可能相当复杂,仅对简单设计有效):

创建一个TableLayout。将另一个TableLayout 放在第一列中,并在第二列中放置一个您希望行跨度的视图。这个内部的TableLayout 可以有尽可能多的TableRows,只要你希望另一个视图跨越。

代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    android:orientation="vertical"
    android:padding="@dimen/activity_horizontal_margin"
    tools:context=".MainActivity">

    <TableLayout
        android:layout_
        android:layout_>

        <TableRow
            android:layout_
            android:layout_
            android:weightSum="3">

            <TableLayout
                android:layout_
                android:layout_
                android:layout_weight="1.5">

                <TableRow
                    android:layout_
                    android:layout_
                    android:background="@android:color/holo_blue_dark">

                    <TextView
                        android:text="Row 1"/>

                </TableRow>

                <TableRow
                    android:layout_
                    android:layout_
                    android:background="@android:color/holo_blue_light">

                    <TextView
                        android:text="Row 2"/>

                </TableRow>

                <TableRow
                    android:layout_
                    android:layout_
                    android:background="@android:color/holo_blue_bright">

                    <TextView
                        android:text="Row 3"/>

                </TableRow>

            </TableLayout>

            <TextView
                android:layout_
                android:layout_
                android:layout_weight="1.5"
                android:text="Second column, rowspan 3"
                android:background="@android:color/holo_purple"
                android:gravity="center"/>

        </TableRow>

    </TableLayout>

</LinearLayout>

所以,你总结一下:

TableLayout:第一列(TableLayout 包含我们想要的任意数量的 TableRows),第二列(将占用所有这些行空间的元素)。

【讨论】:

我错过了什么?你怎么做两行==两列?您应该将两个表格布局放在一行中以实现两列,然后在嵌套表格布局中放置行并在第二个表格布局中放置一行或任何其他内容。然后在第二行设置 span=2 对不起。这是一个错误。我的意思是两列,而不是两行。问题是,第一列包含一个 TableLayout,其中包含您想要跨越的行数,而第二列仅包含一个视图。我会编辑。 将它用于行列表项正是我需要的哈【参考方案2】:

TableLayout 不支持行跨度,仅支持列跨度。 GridLayout 支持行跨度和列跨度:

(图片来自http://android-developers.blogspot.com/2011/11/new-layout-widgets-space-and-gridlayout.html

【讨论】:

以上是关于如何在表格布局中应用行跨度?的主要内容,如果未能解决你的问题,请参考以下文章

自动表格布局和 colspan

如何在表格布局中添加滚动视图?

如何将行动态添加到表格布局中

如何在我的 textview 单元格底部添加 1dp 行(不是表格布局)

如何在android表格布局中合并两行

无法从布局中删除视图