Row_spanをTableLayoutに適用する方法は?
この画像に似たものを作りたいのですが、どうしたらいいのかわかりません。
このようなものを作る正しい方法は何ですか?
TableLayout
は行スパンをサポートせず、列スパンのみをサポートします。 GridLayout
は、行と列の両方のスパンをサポートします。
( http://Android-developers.blogspot.com/2011/11/new-layout-widgets-space-and-gridlayout.html からの写真)
少しの不正行為(コードが非常に複雑で、単純な設計にのみ有効):
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番目の列(これらすべての行のスペースを占める要素)。