1. 程式人生 > >Android佈局之表格佈局

Android佈局之表格佈局

表格佈局(Tablelayout)

 

簡介:   

         Tablelayout類以行和列的形式對控制元件進行管理,每一行為一個TableRow物件,或一個View控制元件。

         當為TableRow物件時,可在TableRow下新增子控制元件,預設情況下,每個子控制元件佔據一列。

         當為View時,該View將獨佔一行。

表格佈局是以行和列的形式來對控制元件進行管理的,所以我們來說說表格佈局對行和列的確定

TableLayout的行數

在開發中由我們來直接指定,就是說有多少個TableRow物件或view控制元件就會有多少行。

TableLayout的列數

等於含有最多子控制元件的TableRow的列數。如第一(行)TableRow含2個子控制元件,第二(行)TableRow含3個,第三(行)TableRow含4個,那麼這個表格佈局的列數就是4列。

 

TableLayout可設定的屬性

 表格佈局可以設定的屬性有兩種:全域性屬性、單元格屬性。

 

全域性屬性(列屬性):  全域性屬性有三個屬性

   Android:stretchColumns    設定可伸展的列。該列可以向行方向伸展,最多可佔據一整行。

  Android:shrinkColumns      設定可收縮的列。(當該列子控制元件裡的內容太多,行內顯示不完的時候會向列的方向顯示內容)。

  Android:collapseColumns  設定要隱藏的列。

下面就來舉例說明一下:

Android:stretchColumns="0"           第0列可伸展

Android:shrinkColumns="1,2"         第1,2列皆可收縮

Android:collapseColumns="1"         隱藏第一行

 

單元格屬性:  單元格屬性有兩個屬性

Android:layout_column    指定該單元格在第幾列顯示

Android:layout_span        指定該單元格佔據的列數(如果我們在使用中沒有指定,那麼預設值將為1)

下面就來舉例說明一下:

Android:layout_column="1"    該控制元件在第1列

Android:layout_span="2"        該控制元件佔了2列

 

下面我們來整體運用一下表格佈局裡的屬性(程式碼和效果圖):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="3dip"
    >

    <!-- 第1個TableLayout,用於描述表中的列屬性。第0列可伸展,第1列可收縮 ,第2列被隱藏-->
    <TextView
        android:text="第一個表格:全域性設定:列屬性設定"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:textSize="15sp"
        android:background="#7f00ffff"/>
    <TableLayout
        android:id="@+id/table1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:stretchColumns="0"
        android:shrinkColumns="1"
        android:collapseColumns="2"
        android:padding="3dip">
        <TableRow>
            <Button android:text="該列可以伸展"/>
            <Button android:text="該列可以收縮"/>
            <Button android:text="被隱藏了"/>
        </TableRow>

        <TableRow>
            <TextView android:text="向行方向伸展,可以伸展很長    "/>
            <TextView android:text="向列方向收縮,*****************************************************************************************可以伸縮很長"/>
        </TableRow>

    </TableLayout>

    <!-- 第2個TableLayout,用於描述表中單元格的屬性,包括:android:layout_column 及android:layout_span-->
    <TextView
        android:text="第二個:單元格設定:指定單元格屬性設定"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:textSize="15sp"
        android:background="#7f00ffff"/>
    <TableLayout
        android:id="@+id/table2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="3dip">
        <TableRow>
            <Button android:text="第1列"/>
            <Button android:text="第2列"/>
            <Button android:text="第3列"/>
        </TableRow>

        <TableRow>
            <TextView android:text="指定在第2列" android:layout_column="1"/>
        </TableRow>

        <TableRow>
            <TextView
                android:text="第二列和第三列!!!!!!!!!!!!"
                android:layout_column="1"
                android:layout_span="2"
                />
        </TableRow>

    </TableLayout>

    <!-- 第3個TableLayout,使用可伸展特性佈局-->
    <TextView
        android:text="第三個表格:非均勻佈局,控制元件長度根據內容伸縮"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:textSize="15sp"
        android:background="#7f00ffff"/>
    <TableLayout
        android:id="@+id/table3"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:stretchColumns="*"
        android:padding="3dip"
        >
        <TableRow>
            <Button android:text="一笑山河紅袖遮" ></Button>
            <Button android:text="姜泥"></Button>
            <Button android:text="兩劍驚破舊山河" ></Button>
        </TableRow>
    </TableLayout>

    <!-- 第4個TableLayout,使用可伸展特性,並指定每個控制元件寬度一致,如1dip-->
    <TextView
        android:text="表4:均勻佈局,控制元件寬度一致"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:textSize="15sp"
        android:background="#7f00ffff"/>
    <TableLayout
        android:id="@+id/table4"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:stretchColumns="*"
        android:padding="3dip"
        >
        <TableRow>
            <Button android:text="徐鳳年" android:layout_width="1dip"></Button>
            <Button android:text="溫華" android:layout_width="1dip"></Button>
            <Button android:text="天不生我李淳罡" android:layout_width="1dip"></Button>
        </TableRow>
    </TableLayout>
</LinearLayout>

 

說完了怎麼用,咱們再來說說表格佈局的優點和缺點:

 

優點:

1、結構位置更簡單 

2、容易上手 

3、 資料化的存放更合理。

例如,學生資訊這樣的表,相對簡單,如果用別的佈局的話就比較麻煩資訊也比較雜亂。

缺點:

1、 標籤結構多,程式碼複雜 

2、 表格佈局,不利於搜尋引擎抓取資訊
 

 

 

這就是Android常用佈局中的表格佈局啦~