web-dev-qa-db-ja.com

テーブルレイアウトで行スパンを適用する方法は?

Row_spanをTableLayoutに適用する方法は?

この画像に似たものを作りたいのですが、どうしたらいいのかわかりません。

table image

このようなものを作る正しい方法は何ですか?

8
miguel

TableLayoutは行スパンをサポートせず、列スパンのみをサポートします。 GridLayoutは、行と列の両方のスパンをサポートします。

GridLayout sample

http://Android-developers.blogspot.com/2011/11/new-layout-widgets-space-and-gridlayout.html からの写真)

19
CommonsWare

少しの不正行為(コードが非常に複雑で、単純な設計にのみ有効):

TableLayoutを作成します。別のTableLayoutを最初の列の中に置き、行スパンを2番目の列に入れたいビューを配置します。この内側のTableLayoutは、他のビューにまたがる必要がある数のTableRowsを持つことができます。

コードは次のとおりです。

<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>

だから、tuは要約します:

TableLayout:最初の列(必要な数のTableRowを含むTableLayout)、2番目の列(これらすべての行のスペースを占める要素)。

enter image description here