如何将row_span应用于TableLayout?
我想制作类似于此图片的内容,但我不知道该怎么做。
制作这样的东西的正确方法是什么?
答案 0 :(得分:19)
TableLayout
不支持行跨度,只支持列跨度。 GridLayout
支持行和列间距:
(图片来自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),第二列(将占用所有这些行空间的元素)。
答案 2 :(得分:0)
你使用过&#34; android:layout_span &#34;它可以用来跨行。您无法通过Ctrl + Space获取它,您需要手动输入它。