1.0 其實是6大布局谊路。主要是別人都寫的是五大布局传于,我不這么寫多不合群囱挑?
- 之前寫到UI開發(fā)之八了,感興趣的可以找我的之前發(fā)的文章沼溜,這篇主要講解Android的布局之實用篇平挑。
-
5大布局
一定要一起講!網(wǎng)上的文章大都沒有強(qiáng)調(diào)過這一點系草。在實際運用中通熄,各大布局往往隨著需互相嵌套,而且只要邏輯上(思路)沒什么問題找都,嵌套起來往往也會是推論中的效果唇辨。 - 總之,只要思想不滑坡能耻,辦法總比困難多赏枚。
1.1 Android Studio2.
2以前的Android五大布局
:
線性布局 LinearLayout
相對布局 RelativeLayout
幀布局 FrameLayout
-
表格布局 TableLayout
(很少有人用) -
絕對布局 AbsoluteLayout
(這個玩意基本沒人用)
現(xiàn)在我們?nèi)ナ忻嫔腺I的Android學(xué)習(xí)的參考書,也就止步于上面的內(nèi)容晓猛,但是6龇!戒职!
1.2 Android Studio2.2及其以后的Android studio版本增加了一個布局:
-
約束布局 ConstarintLayout
這個在我的一篇文章里面已經(jīng)講解了栗恩,具體用法也在里面,現(xiàn)在自己寫布局基本上也就是用的這個布局洪燥,主要是用起來特別方便磕秤。 - 布局可以相互嵌套,需要用比如線性布局LinearLayout的時候蚓曼,大不了嵌套在里面得了亲澡。
鏈接在此: 【Android】10.0 UI開發(fā)(一)——如何編寫程序界面钦扭、常見控件的使用 - 不要擔(dān)心
約束布局 ConstarintLayout
是新技術(shù)怕Android低版本不兼容纫版,它一直向下兼容到Android 2.2。 - 所以我們還是可以叫
五大布局
(絕對布局沒啥用客情,而且Android studio2.x版本
之后把絕對布局 AbsoluteLayout
給刪了……其弊,當(dāng)然癞己,我們所說的刪的意思是過時)
palette列表都不提供絕對布局AbsoluteLayout:
-
新建一個項目,命名為LayoutTest梭伐,目錄如下:
2.0 相對布局 RelativeLayout
2.1 為什么先從相對布局講起痹雅?
因為別人都是從 線性布局 LinearLayout 講起的……
首先需要普及兩個用法却嗡,怕作為帶路黨不敬業(yè)假残,特意錄制好小視頻放上來。
2.2 谷歌攻城獅的意思腋舌,就是鼓勵大家用Android studio的圖形化開發(fā)界面赂苗,不必像以前那樣盯著源代碼翻翻找找愉耙。(當(dāng)然,如果你看不懂xml布局文件的源代碼拌滋,等著崩潰吧朴沿,總有bug等著你)
先放五個控件上來,沒錯败砂,一般的控件就這么放置就行了赌渣。(而且還可以ctrl+c加ctrl+v,在Design界面
復(fù)制粘貼控件)
接下來打開我們的好伙伴們:
2.21
Component Tree
當(dāng)前的控件層次(翻譯成中文叫組件樹)-
2.22
Attributes
翻譯:屬性昌犹,關(guān)于某個控件的一切都可以在這里圖形化操作坚芜。- 這里還設(shè)置了它一個設(shè)置
Docked Mode
(停靠模式)斜姥,基本上Android studio
類似于Attributes
這樣的組成部分货岭,設(shè)置里面都有這個屬性,意思是固定在墻邊疾渴。Android studio 3.x版本
之前的版本用的英文單詞是Properties
(性質(zhì))千贯,并不是現(xiàn)在的Attributes
,不過位置還是在那個位置搞坝。 - 類似于
tab鍵
上面的雙箭頭搔谴,就是屬性的簡詳切換,看不懂意思的可以嘗試放棄走程序員這條路桩撮。
-2.23Preview
翻譯:預(yù)覽敦第。進(jìn)入text編輯界面
,里面右側(cè)有個這個店量,方便在源代碼編輯芜果、調(diào)試的時候,實時預(yù)覽融师。
- 這里還設(shè)置了它一個設(shè)置
2.3 為了方便預(yù)覽右钾,我們把id
和text
設(shè)置一下:
注意:我這里沒有去源代碼添加代碼,也沒有去控件選擇具體某個控件,僅僅通過上圖步驟123來操作舀射,效果簡潔明了窘茁。
當(dāng)修改完內(nèi)容后,脫離修改位置脆烟,視圖就會自動實時更新山林。
2.4 調(diào)整組件大小,首先為了方便編輯邢羔,我們把組件樹的button控件變成上右下左中:
然后把橫的鋪滿橫的驼抹,豎的鋪滿豎的:
按照上圖的步驟123,把上下左右4個控件這樣設(shè)置一下拜鹤,最后是這樣的效果:
2.5 我們讓它鋪滿:
為了不遮擋控件砂蔽,用的左控件做例子,我們把鼠標(biāo)挪過去署惯,會發(fā)現(xiàn)出現(xiàn)小圓圈變紅色左驾,并停留一段時間會有信息提示(刪除對xx邊的約束),單擊后极谊,就會取消當(dāng)前的約束诡右。依樣畫葫蘆把上下左右4個控件這樣設(shè)置一下,最后是這樣的效果:
在右側(cè)的純藍(lán)色的布局約束預(yù)覽界面轻猖,可以看出組件有重疊帆吻,疊放層次完全取決于標(biāo)注1組件樹所示的層次。
2.6 讓控件靠著四邊咙边,并不再重疊猜煮。
- 2.61 首先解決靠邊的問題。
主要是屬性 layout_align系列
在起作用败许,這個系列的勢力龐大:
但一旦使用一般最多用其中4種王带,具體意義和它的名字沒什么區(qū)別,懂了就是懂了:
android:layout_alignBaseline 本元素的文本與父元素文本對齊
android:layout_alignWithParentIfMissing 如果對應(yīng)的兄弟元素找不到的話就以父元素做參照物
android:layout_alignBottom 本元素的下邊緣和某元素的的下邊緣對齊
android:layout_alignEnd本元素與結(jié)束的父元素對齊
android:layout_alignLeft 本元素的左邊緣和某元素的的左邊緣對齊
android:layout_alignRight 本元素的右邊緣和某元素的的右邊緣對齊
android:layout_alignStart本元素與開始的父元素對齊
android:layout_alignEnd本元素與結(jié)束的父元素對齊
android:layout_below 在某元素的下方
android:layout_above 在某元素的的上方
android:layout_toLeftOf 在某元素的左邊
android:layout_toRightOf 在某元素的右邊
android:layout_toStartOf本元素從某個元素開始
android:layout_toEndOf本元素在某個元素結(jié)束
android:layout_alignParentBottom 貼緊父元素的下邊緣
android:layout_alignParentEnd緊貼父元素結(jié)束位置結(jié)束
android:layout_alignParentLeft 貼緊父元素的左邊緣
android:layout_alignParentRight 貼緊父元素的右邊緣
android:layout_alignParentStart緊貼父元素結(jié)束位置開始
android:layout_alignParentTop 貼緊父元素的上邊緣
- 2.62 把各個元素和父元素的約束取消:
如果控件四邊中間的白色小圓點
試圖拖動市殷,或者沒有約束的時候愕撰,會變成綠色,變成紅色純粹是為了告訴我們醋寝,可以刪掉這小圓點代表的約束條件搞挣。 -
2.63 添加對父元素的貼邊約束:
找到上圖所示的屬性,點擊變成對勾就行了音羞。源代碼就會相應(yīng)地改變:
點擊上圖劃紅線的地方囱桨,查看控件所在的源代碼:
就這么簡單。
- 2.64 把按鈕疊放空出來嗅绰,這時候可以看出來
相對布局 RelativeLayout
的缺點來了舍肠,首先你只能這個操作:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/buttontop"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:text="上" />
<Button
android:id="@+id/buttonright"
android:layout_width="40dp"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:layout_marginTop="45dp"
android:layout_marginBottom="45dp"
android:text="右" />
<Button
android:id="@+id/buttonbuttom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="0dp"
android:text="下" />
<Button
android:id="@+id/buttonleft"
android:layout_width="40dp"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:layout_marginTop="45dp"
android:layout_marginBottom="45dp"
android:text="左" />
<Button
android:id="@+id/buttoncenter"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_centerInParent="true"
android:text="中" />
</RelativeLayout>
代碼很簡單搀继,比如說左:
android:layout_marginTop="45dp"
android:layout_marginBottom="45dp"
這兩行代碼把上下按鈕給空出來,這使得你不得不得去約束一個固定值的高度 android:layout_height="xxx dp"
給上下按鈕(這里我并沒有設(shè)置)貌夕,不然很可能出現(xiàn)在其他手機(jī)上運行效果不一致(再一次覆蓋按鈕或者空隙太多,UI效果差)民镜,并且還要做平板電腦的顯示界面處理啡专,因為控件并不會跟隨屏幕大小,而等比例放大縮小制圈。
layout_margin系列屬性
又是一個系列们童,可以百度其他人寫的文章看一眼就知道怎么回事了。
這里把中間加了一行代碼居中了:
<Button
android:id="@+id/buttoncenter"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_centerInParent="true"
android:text="中" />
layout_center系列屬性有3個:
-
android:layout_centerInparent
相對于父元素完全居中 -
android:layout_centerHrizontal
水平居中 -
android:layout_centerVertical
垂直居中
目前顯示效果如下:
2.7 相對布局 RelativeLayout
還能做的最后一個示范鲸鹦。
-
2.71 把中按鈕復(fù)制成9份:
好吧慧库,我知道我bottom字母打錯了(控件id為buttonbottom,現(xiàn)在寫成了buttonbuttom)
然后修改下內(nèi)容和id:
2.72 這里面除了之前的第一個中按鈕馋嗜,變成了現(xiàn)在的5按鈕齐板,是居中之外,其他按鈕需要設(shè)置一下葛菇。
我們做成九宮格的電話按鈕效果甘磨,就用2.16所講的屬性 layout_align系列
,增加同級約束(達(dá)到效果的約束有好幾種眯停,看你怎么相互約束而已),先看代碼和效果:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/buttontop"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:text="上" />
<Button
android:id="@+id/buttonright"
android:layout_width="40dp"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:layout_marginTop="45dp"
android:layout_marginBottom="45dp"
android:text="右" />
<Button
android:id="@+id/buttonbottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="0dp"
android:text="下" />
<Button
android:id="@+id/buttonleft"
android:layout_width="40dp"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:layout_marginTop="45dp"
android:layout_marginBottom="45dp"
android:text="左" />
<Button
android:id="@+id/buttonnum1"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_toLeftOf="@id/buttonnum2"
android:layout_alignTop="@id/buttonnum2"
android:text="1" />
<Button
android:id="@+id/buttonnum2"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_above="@+id/buttonnum5"
android:layout_alignStart="@id/buttonnum5"
android:text="2" />
<Button
android:id="@+id/buttonnum3"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignTop="@id/buttonnum2"
android:layout_toEndOf="@id/buttonnum2"
android:text="3" />
<Button
android:id="@+id/buttonnum4"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignTop="@+id/buttonnum5"
android:layout_toStartOf="@+id/buttonnum5"
android:text="4" />
<Button
android:id="@+id/buttonnum5"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_centerInParent="true"
android:text="5" />
<Button
android:id="@+id/buttonnum6"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignTop="@+id/buttonnum5"
android:layout_toEndOf="@+id/buttonnum5"
android:text="6" />
<Button
android:id="@+id/buttonnum7"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_below="@+id/buttonnum6"
android:layout_toStartOf="@+id/buttonnum5"
android:text="7" />
<Button
android:id="@+id/buttonnum8"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_below="@id/buttonnum5"
android:layout_alignStart="@id/buttonnum5"
android:text="8" />
<Button
android:id="@+id/buttonnum9"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_toEndOf="@id/buttonnum8"
android:layout_alignTop="@id/buttonnum8"
android:text="9" />
</RelativeLayout>
我的約束思路是济舆,把5按鈕定格在屏幕中央,這樣無論什么手機(jī)莺债,無論屏幕多大滋觉,這9個鍵肯定在屏幕中間,然后2齐邦、4椎侠、6、8按鈕和5按鈕對齊措拇,1肺蔚、3按鈕和2按鈕對齊,7儡羔、9按鈕和8按鈕對齊宣羊。
首先看2按鈕:
大家不要去看1、3按鈕汰蜘,因為已經(jīng)做好約束了仇冯,標(biāo)注1是代碼,標(biāo)注2*是效果族操,一目了然苛坚。
android:layout_above
在某元素的的上方
然后比被,我們要把2按鈕的左側(cè)和5按鈕的左側(cè)對齊:
這里用toxxxof格式
的約束,發(fā)現(xiàn)是熱臉貼冷屁股型泼舱,貼到對方的left側(cè)
說句實話:
如果Left型和Start型(還有Right和End型)
同時存在的話等缀,用起來其實沒什么區(qū)別,效果一模一樣娇昙。
不過Android studio
會在Left型(Right型)
出現(xiàn)黃色覆蓋標(biāo)識尺迂,而Start型(End型)
并不會,那意思不久就是建議用Start型(End型)
唄冒掌。
如果是用圖形化拖拽自動生成左右約束的話噪裕,生成的也是是Start/End類型
約束的源代碼。
align_left
這樣的屬性明顯是同甘共苦型股毫,它會和對方元素同左同右的膳音。
于是,2按鈕的約束也就成了如下的代碼:
<Button
android:id="@+id/buttonnum2"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_above="@+id/buttonnum5"
android:layout_alignStart="@id/buttonnum5"
android:text="2" />
再分析下9按鈕铃诬,它得貼8按鈕的右屁股祭陷,不然和8按鈕左右對齊用同甘共苦型的話,兩人就左對齊了:
所以要這樣:
然后9按鈕和8按鈕上下同生共死就行了:
這里看到趣席,是同上邊生死颗胡,那么同下邊呢?
可見吩坝,只要思想不滑坡毒姨,辦法總比困難多。
最終效果的源代碼就可以這樣了:
其他的按鈕大同小異钉寝,邏輯上能走通弧呐,就能約束好控件,具體用什么屬性 layout_align系列并沒有唯一(死板)的解決方案嵌纲。
3.0 線性布局 LinearLayout
3.1線性布局就講一個案例俘枫,首先我們在app/src/main/res/layout
目錄下新建一個xml文件
,文件名隨意逮走,我的叫linearlayout_activity
鸠蚪,剛開始源代碼是這樣子:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
</LinearLayout>
3.2 復(fù)制2份LinearLayout布局組件
,并設(shè)置相應(yīng)的權(quán)重(比重):
不過源代碼是這樣子:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal">
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical">
</LinearLayout>
</LinearLayout>
android:layout_weight="1"
權(quán)重的概念很簡單师溅,父元素里面目前就兩個權(quán)重控件茅信,而且加起來等于2,意思就是墓臭,這兩個控件對半分整個父元素蘸鲸,如果第LinearLayout組件 android:layout_weight="2"
,表示現(xiàn)在天下這份蛋糕窿锉,已經(jīng)變成3份酌摇,而我將占據(jù)其中的2份膝舅。
android:orientation="vertical" 表示LinearLayout組件里面的元素是上下一個個排列的。(horizontal左右一個個排列)
3.3 我們給每個子LinearLayout組件各增加3個button控件窑多,并改好名字:
空間之間之所以有空隙仍稀,是文字自帶的背景沒填滿的關(guān)系,可以給每個button控件增加一個背景顏色埂息,像這樣:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal">
<Button
android:id="@+id/hbutton1"
android:layout_width="wrap_content"
android:background="#FF0000"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="橫著1" />
<Button
android:id="@+id/hbutton2"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="#37FF00"
android:layout_weight="1"
android:text="橫著2" />
<Button
android:id="@+id/hbutton3"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="#0030FF"
android:layout_weight="1"
android:text="橫著3" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical">
<Button
android:id="@+id/vbutton1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FF0000"
android:layout_weight="1"
android:text="豎著1" />
<Button
android:id="@+id/vbutton2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#37FF00"
android:layout_weight="1"
android:text="豎著2" />
<Button
android:id="@+id/vbutton3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#0030FF"
android:layout_weight="1"
android:text="豎著3" />
</LinearLayout>
</LinearLayout>
4.0 幀布局 FrameLayout
4.1幀布局經(jīng)常用在Android碎片活動
里面技潘,比如做出微信(QQ)主界面的效果,可以在下面的底部標(biāo)題欄里面切換*“微信”耿芹、“通訊錄”崭篡、“發(fā)現(xiàn)”挪哄、“我”時吧秕,不需要新建活動就可以達(dá)到顯示內(nèi)容切換的效果。
-
FrameLayout
是幾個布局中最簡單的一個布局迹炼,單純?nèi)绨准垺?/li>
4.2 這里也就舉一個案例砸彬,在app/src/main/res/layout
新建一個xml文件
,文件名隨意斯入,我的叫framelayout_activity
砂碉,剛開始是這樣的:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
</FrameLayout>
4.3 我們拖4個TextView控件到里面,并改好名字:
4.4先把textview1控件鋪滿全屏刻两,并設(shè)置一個喜慶的大紅色:
4.5 把textview2控件居中一下(嚴(yán)謹(jǐn)來說增蹭,最好textview1控件也做居中處理,但是沒必要磅摹,都鋪滿了):
為了看出效果滋迈,這里通過步驟2把textview2控件變大一些,然后通過android:layout_gravity="center"設(shè)置控件居中户誓。
源代碼如下:
<TextView
android:id="@+id/textView2"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_gravity="center"
android:text="TextView2" />
分別textview2控件饼灿、textview3控件、textview3控件設(shè)置一個背景顏色帝美,把textview3控件碍彭、textview3控件大小調(diào)整下,給同樣居中處理悼潭,源代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff0000"
android:text="TextView1" />
<TextView
android:id="@+id/textView2"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_gravity="center"
android:background="#00ff00"
android:text="TextView2" />
<TextView
android:id="@+id/textView3"
android:layout_width="140dp"
android:layout_height="140dp"
android:layout_gravity="center"
android:background="#0000ff"
android:text="TextView3" />
<TextView
android:id="@+id/textView4"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center"
android:background="#FFC4C4"
android:text="TextView4" />
</FrameLayout>
效果如下:
幀布局本身的話庇忌,就這些,如果配合碎片活動舰褪,才會變得比較復(fù)雜(需要構(gòu)造適配器java類)
好吧漆枚,我居然沒寫碎片活動的文章……
5.0 表格布局TableLayout (絕對布局 AbsoluteLayout不做介紹和講解)
用這個的是真心少,所以也是舉一個例子介紹一下:
5.1抵知,在app/src/main/res/layout
新建一個xml
文件墙基,文件名隨意软族,我的叫framelayout_activity
,剛開始是這樣的:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
</TableLayout>
-
Tablelayout類
以行和列的形式對控件進(jìn)行管理残制,每一行為一個TableRow對象
立砸,或一個View控件
。 - 當(dāng)為
TableRow對象
時初茶,可在Tablelayout
下添加子控件颗祝,默認(rèn)情況下,每個子控件占據(jù)一列恼布。 - 當(dāng)為
View控件
時螺戳,該View
將獨占一行。
TableLayout可設(shè)置的屬性包括全局屬性及單元格屬性折汞。全局屬性也即列屬性倔幼,有以下3個參數(shù):
android:stretchColumns
設(shè)置可伸展的列。該列可以向行方向伸展爽待,最多可占據(jù)一整行损同。
android:shrinkColumns
設(shè)置可收縮的列。當(dāng)該列子控件的內(nèi)容太多鸟款,已經(jīng)擠滿所在行膏燃,那么該子控件的內(nèi)容將往列方向顯示。
android:collapseColumns
設(shè)置要隱藏的列何什。
例如:
android:stretchColumns="0"
第0列可伸展
android:shrinkColumns="1,2"
第1,2列皆可收縮
android:collapseColumns="*"
隱藏所有行單元格屬性组哩,有以下2個參數(shù):
android:layout_column
指定該單元格在第幾列顯示
android:layout_span
指定該單元格占據(jù)的列數(shù)(未指定時,為1)
例如:
android:layout_column="1"
該控件顯示在第1列
android:layout_span="2"
該控件占據(jù)2列
源代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stretchColumns="0"
android:shrinkColumns="1"
android:collapseColumns="2">
<TableRow android:id="@+id/tablerow1">
<Button android:id="@+id/button1" android:text="該列可伸展" />
<Button android:id="@+id/button2" android:text="該列可收縮" />
<Button android:id="@+id/button3" android:text="我被隱藏了" />
</TableRow>
<TableRow android:id="@+id/tablerow2">
<TextView android:id="@+id/textview01" android:text="我向行方向伸展处渣,巴拉巴拉小魔仙伶贰,我可以很長 " />
<TextView android:id="@+id/textview02" android:text="我向列方向收縮,兩份炒粉多放辣謝謝霍比,我可以很深" />
</TableRow>
</TableLayout>
效果如下:
END