Android零基礎入門第29節:善用TableLayout表格布局,事半功倍
前面學習了線性布局和相對布局,線性布局雖然方便,但如果遇到控件需要排列整齊的情況就很難達到要求,用相對布局又比較麻煩,為此Android系統中提供了表格布局。
一、認識TableLayout
表格布局就是讓控件以表格的形式來排列控件,只要將控件放在單元格中,控件就可以整齊地排列,使用TableLayout標簽。
TableLayout繼承了 LinearLayout,因此它的本質依然是線性布局管理器。每次向TableLayout中添加一個TableRow,該TableRow就是一個表格行,TableRow也是容器,因此它也可以不斷地添加其他組件,每添加一個子組件該表格就增加一列。如果直接向TableLayout中添加組件,那麽這個組件將直接占用一行。
在表格布局中,列的寬度由該列中最寬的那個單元格決定,整個表格布局的寬度則取決於父容器的寬度(默認總是占滿父容器本身)。
在表格布局管理器中,可以為單元格設置如下3種行為方式。
-
Shrinkable:如果某個列被設為Shrinkable,那麽該列的所有單元格的寬度可以被收縮,以保證該表格能適應父容器的寬度。
-
Stretchable:如果某個列被設為Stretchable,那麽該列的所有單元格的寬度可以被拉伸,以保證組件能完全填滿表格空余空間。
-
Collapsed:如果某個列被設為Collapsed,那麽該列的所有單元格會被隱藏。
TableLayout繼承了 LinearLayout,因此它完全可以支持LinearLayout所支持的全部XML屬性。除此之外,TableLayout還支持如下表所示的XML屬性和相關方法。
二、示例
接下來通過一個簡單的示例程序來學習TableLayout的使用用法。
同樣使用WidgetSample工程,繼續使用app/main/res/layout/目錄下的activity_main.xml文件,在其中填充如下代碼片段:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!-- 定義第一個表格布局,指定第2列允許收縮,第3列允許拉伸 --> <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:shrinkColumns="1" android:stretchColumns="2"> <!-- 直接添加按鈕,它自己會占一行 --> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="獨自一行的按鈕"/> <!-- 添加一個表格行 --> <TableRow> <!-- 為該表格行添加三個按鈕 --> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="普通按鈕"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="收縮的按鈕"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="拉伸的按鈕"/> </TableRow> </TableLayout> <!-- 定義第2個表格布局 ,指定第2列隱藏--> <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:collapseColumns="1"> <!-- 添加一個表格行 --> <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> </TableLayout> <!-- 定義第3個表格布局,指定第2列和第3列可以被拉伸--> <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:stretchColumns="1,2"> <!--定義一個表格行--> <TableRow> <!-- 為該表格行添加三個按鈕 --> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="普通按鈕" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="拉伸的按鈕" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="拉伸的按鈕" /> </TableRow> <!--定義一個表格行--> <TableRow> <!-- 為該表格行添加兩個按鈕 --> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="普通按鈕" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="拉伸的按鈕" /> </TableRow> </TableLayout> </LinearLayout>
上面頁面中定義了 3個TableLayout,3個TableLayout中粗體字代碼指定了它們對各列的控制行為。
-
第1個TableLayout,指定第2列允許收縮,第3列允許拉伸。
-
第2個TableLayout,指定第2列被隱藏。
-
第3個TableLayout,指定第2列和第3列允許拉伸。
運行程序,可以看到下圖所示界面效果。
需要註意的是TableRow不需要設置寬度layout_width和高度layoutJieight,其寬度一定是match_parent,即自動填充父容器,高度一定為wrap_content,即根據內容改變高度。但對於TableRow中的其他控件來說,是可以設置寬度和高度的,但必其須是 wrap_content 或者 fill_parent。
到此,TableLayout的示例結束,關於TableLayout的更多用法可以多動手練習。
今天就先到這裏,如果有問題歡迎留言一起探討,也歡迎加入Android零基礎入門技術討論微信群,共同成長!
此文章版權為微信公眾號分享達人秀(ShareExpert)——鑫鱻所有,若轉載請備註出處,特此聲明!
往期總結分享:
Android零基礎入門第1節:Android的前世今生
Android零基礎入門第2節:Android 系統架構和應用組件那些事
Android零基礎入門第3節:帶你一起來聊一聊Android開發環境
Android零基礎入門第4節:正確安裝和配置JDK, 高富帥養成第一招
Android零基礎入門第5節:善用ADT Bundle, 輕松邂逅女神
Android零基礎入門第6節:配置優化SDK Manager, 正式約會女神
Android零基礎入門第7節:搞定Android模擬器,開啟甜蜜之旅
Android零基礎入門第8節:HelloWorld,我的第一趟旅程出發點
Android零基礎入門第9節:Android應用實戰,不懂代碼也可以開發
Android零基礎入門第10節:開發IDE大升級,終於迎來了Android Studio
Android零基礎入門第11節:簡單幾步帶你飛,運行Android Studio工程
Android零基礎入門第12節:熟悉Android Studio界面,開始裝逼賣萌
Android零基礎入門第13節:Android Studio配置優化,打造開發利器
Android零基礎入門第14節:使用高速Genymotion,跨入火箭時代
Android零基礎入門第15節:掌握Android Studio項目結構,揚帆起航
Android零基礎入門第16節:Android用戶界面開發概述
Android零基礎入門第17節:TextView屬性和方法大全
Android零基礎入門第18節:EditText的屬性和使用方法
Android零基礎入門第19節:Button使用詳解
Android零基礎入門第20節:CheckBox和RadioButton使用大全
Android零基礎入門第21節:ToggleButton和Switch使用大全
Android零基礎入門第22節:ImageView的屬性和方法大全
Android零基礎入門第23節:ImageButton和ZoomButton使用大全
Android零基礎入門第24節:自定義View簡單使用,打造屬於你的控件
Android零基礎入門第25節:簡單且最常用的LinearLayout線性布局
Android零基礎入門第26節:兩種對齊方式,layout_gravity和gravity大不同
Android零基礎入門第27節:正確使用padding和margin
Android零基礎入門第28節:輕松掌握RelativeLayout相對布局
Android零基礎入門第29節:善用TableLayout表格布局,事半功倍