如何在tablelayout中应用行跨度?

时间:2013-04-20 23:19:58

标签: java android row html tablelayout

如何将row_span应用于TableLayout?

我想制作类似于此图片的内容,但我不知道该怎么做。

table image

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

3 个答案:

答案 0 :(得分:19)

TableLayout不支持行跨度,只支持列跨度。 GridLayout支持行和列间距:

GridLayout sample

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

答案 1 :(得分:5)

很少作弊(代码可能非常复杂,只对简单设计有效):

制作File > Invalidate Caches / Restart > Invalidate and Restart。将另一个TableLayout放在第一列中,将一个视图放在第二列中的rowspan中。这个内部TableLayout可以拥有与TableLayout一样多的TableRows,而不是另一个视图。{/ p>

以下是代码:

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

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:weightSum="3">

            <TableLayout
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1.5">

                <TableRow
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@android:color/holo_blue_dark">

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

                </TableRow>

                <TableRow
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@android:color/holo_blue_light">

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

                </TableRow>

                <TableRow
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@android:color/holo_blue_bright">

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

                </TableRow>

            </TableLayout>

            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                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),第二列(将占用所有这些行空间的元素)。

enter image description here

答案 2 :(得分:0)

你使用过&#34; android:layout_span &#34;它可以用来跨行。您无法通过Ctrl + Space获取它,您需要手动输入它。