How to apply row span in tablelayout?

本秂侑毒 提交于 2019-12-04 22:03:04

问题


How to apply row_span to TableLayout?

I want to make something similar to this image, but i don't know how to do it.

What is the correct way to make something like this?


回答1:


TableLayout does not support row spans, only column spans. GridLayout supports both row and column spans:

(picture from http://android-developers.blogspot.com/2011/11/new-layout-widgets-space-and-gridlayout.html)




回答2:


Little cheating (maybe quite complex to code and only valid for a simple design):

Make a TableLayout. Put another TableLayout inside the first column and a view that you want to have the rowspan in the second column. This inner TableLayout can have as many TableRows as you whish the other view to span.

Here's the code:

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

So, tu sum up:

TableLayout: first column (TableLayout with as many TableRows as we want), second column (element that will take up all those rows' space).




回答3:


Have you used "android:layout_span" it can be used to span rows. You can not get it via Ctrl+Space you need to type it manually.



来源:https://stackoverflow.com/questions/16126243/how-to-apply-row-span-in-tablelayout

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!