。 下面首先來看一下TableLayout的文檔: 它是LinearLayout線性佈局管理器的子類,其繼承結構爲: java.lang.Object ↳ android.view.View ↳ android.view.ViewGroup ↳ android.widget.LinearLayout ↳ android.widget.TableLayout 從文檔中不難看出,要使用TableLayout就離不開TableRow,那麼TableRow的文檔如下: 其也是LinearLayout的子類,繼承結構如下: java.lang.Object ↳ android.view.View ↳ android.view.ViewGroup ↳ android.widget.LinearLayout ↳ android.widget.TableRow 在Eclipse中創建一個項目來說明TableLayout,首先使用XML來定義佈局管理器:
我們創建了一個表格佈局管理器,在其中創建了兩行,也就是兩個TableRow元素。在第一行中,我們放置了兩個組件,一個是文本輸入組件,給出默認提示文字。第二個是一個按鈕,構成一個搜索框。 第二個TableRow中我們放置了一個提示文本和一個單選按鈕,那麼創建一個TextView和一個RadioGroup就行了。在RadioGroup中我們設置RadioButton是縱向排列的,然後默認選中一個。 在兩個TableRow中間,我們放置了一個<View>元素,可以表示任意的組件,這裏我們放置一個水平線,就像HTML中的<hr>元素效果,設置寬度是2dp,顏色爲#FDF5E6。 運行這段程序,我們就得到如下的顯示效果: 我們在Web開發中使用表格最多的應用就是數據顯示了,那麼在Android中也會需要用表格來顯示數據,下面我們就來看看如何使用TableLayout和TableRow來顯示數據,再創建一個佈局管理器文件(在layout下創建datadisplay.xml), 那麼在R.java中我們就會得到對應的資源:
下面來編寫這個佈局文件,其內容如下:
這裏我們僅僅定義出表格的表頭,有4列顯示內容,那麼layout_column表示的就是該列的編號,可以看出,這個編號是從0開始的,同時這是顯示樣式的水平居中顯示,並且都有10dp的間距。修改Activity程序中的佈局管理器文件:
那麼可以看到,表頭我們就做出來了,下面繼續設置內容:
我們設置了一條水平橫線,下面是兩條數據的顯示,那麼運行程序,我們會看到這樣的顯示效果: 顯示不下不要緊,我們切換到橫屏模式下再看: 但是問題仍然存在,因爲某一個文本太長了,並且我們設置了水平居中顯示的效果,所以後面的內容都顯示不下消失了,顯然這麼顯示不合理,需要列可以折行顯示內容,設置如下內容:
在TableLayout元素上我們設置一個shrinkColumns屬性,就是設置哪一列可以折行顯示,這裏是第三列需要折行顯示,設置完成,顯示效果如下: 我們就得到了預期的效果。表格佈局中還可以設置隱藏列,那麼需要在TableLayout上設置如下屬性:
和前面兩個佈局管理器類似,我們也可以通過程序來控制表格佈局管理器。不難想到這裏我們需要四個類來完成,分別是TableLayout,TableLayout.LayoutParams,TableRow,TableRow.LayoutParams 下面來看一下TableLayout.LayoutParams的文檔: 可以看出TableLayout.LayoutParams繼承自LinearLayout.LayoutParams,其繼承結構如下: java.lang.Object ↳ android.view.ViewGroup.LayoutParams ↳ android.view.ViewGroup.MarginLayoutParams ↳ android.widget.LinearLayout.LayoutParams ↳ android.widget.TableLayout.LayoutParams 下面是TableRow.LayoutParams,其實它們都是類似的: 它的繼承結構爲: java.lang.Object ↳ android.view.ViewGroup.LayoutParams ↳ android.view.ViewGroup.MarginLayoutParams ↳ android.widget.LinearLayout.LayoutParams ↳ android.widget.TableRow.LayoutParams 下面我將在XML佈局管理文件中配置的數據表格用程序來進行編寫,那麼就需要準備數據,表格數據可以看作是二維表,那麼很自然想到,在數據量不大時可以使用而爲數組來表示,其代碼如下:
對於二維數組的遍歷必然是嵌套的循環來進行,運行程序,我們得到如下效果: 可以看到,我們之前設置的顯示效果都不存在了,當然這可以通過代碼繼續設置樣式,但該代碼已經相當的複雜了,如果繼續修改程序,那程序必然顯得十分臃腫。所以對複雜佈局我們採用XML文件的配置方式來進行是比較好的方法。
方法總結: TableLayout經常用到的屬性有: android:collapseColumns:以第0行爲序,隱藏指定的列: android:collapseColumns該屬性爲空時,效果如下圖: 把android:collapseColumns=0,2--------------》意思是把第0和第2列去掉,如下圖: android:shrinkColumns:以第0行爲序,自動延伸指定的列填充可用部分: 當LayoutRow裏面的控件還沒有佈滿佈局時,shrinkColumns不起作用,如下圖: 設置了shrinkColumns=0,1,2,佈局完全沒有改變,因爲LayoutRow裏面還剩足夠的空間。 當LayoutRow佈滿控件時,如下圖: 設置設置了shrinkColumns=2,則結果如下圖,控件自動向垂直方向填充空間: android:stretchColumns:以第0行爲序,儘量把指定的列填充空白部分: 設置stretchColumns=1,則結果如下圖,第1列被儘量填充(Button02與TextView02同時向右填充,直到TextView03被壓擠到最後邊)。 發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
|
TableLayout表格佈局學習
在Web開發中,我們會接觸到形形色色的表格,HTML中的元素爲我們實現了表格的實現,可以說,表格是我們使用最多的元素。在Android中,我們可以使用TableLayout來實現表格佈局。HTML的表格中使用