2011-04-22

Android Layout Managers - TableLayout

TableLayout

TableLayout 繼承自 LinearLayout,以 row 與 column 來配置元件。
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TableRow>
            <Button 
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="1"/>
            <Button 
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="2"/>
            <Button 
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="3"/>
    </TableRow>
    <TableRow>
            <Button 
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="4"/>
            <Button 
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="5"/>
            <Button 
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="6"/>
    </TableRow>
    <TableRow>
            <Button 
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="7"/>
            <Button 
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="8"/>
            <Button 
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="9"/>
    </TableRow>
    <Button 
            android:text="0"/>
</TableLayout>

因為 TableLayout 以 row 為主,所以 column 數由最多 cell 的 row 決定。

除了 TableRow 以外,android.widget.View 也可以作為 TableLayout 的子元件,如上面的 0 按鈕。

TableLayout 子元件的寬度一概與 table 的寬度一致,所以子元件的 layout_width 一律為 fill_content,不可為 wrap_content(設了也沒用),如上面的 0 按鈕,但是 layout_height 是可以自訂的。

stretchColumns - 指定延伸寬度的 column,星號表示全部,或者以逗號區隔從 0 算起的 column index。
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:stretchColumns="*">
    ...
</TableLayout>
shrinkColumns - 指定不延伸寬度的 column,星號表示全部,或者以逗號區隔從 0 算起的 column index。
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:stretchColumns="0,2"
    android:shrinkColumns="1">
    ...
</TableLayout>
shrinkColumns 為預設狀態,所以上面的範例只使用 android:stretchColumns="0,2" 也有一樣的效果。

collapseColumns - 指定不顯示的 column,星號表示全部,或者以逗號區隔從 0 算起的 column index。

layout_span - 設定單一 cell 可以跨多個 column。
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:stretchColumns="*">
    ...
    <TableRow>
            <Button 
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="0"/>
            <Button 
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_span="2"
                    android:text="="/>
    </TableRow>
</TableLayout>

沒有留言:

張貼留言