前言
在進(jìn)行Android開發(fā)中漱抓,常常需要用到各種布局來進(jìn)行UI的繪制,今天我們就來講下Android開發(fā)中最常用的五大布局介紹和相關(guān)屬性的設(shè)置恕齐。
目錄
Android五大布局介紹&屬性設(shè)置.jpg
一乞娄、布局介紹
在Android中,共有五種布局方式显歧,分別是:
FrameLayout(框架布局)
LinearLayout(線性布局)
AbsoluteLayout(絕對布局)
RelativeLayout(相對布局)
TableLayout(表格布局)
1. FrameLayout框架布局
布局特點:放入其中的所有元素都被放置在最左上的區(qū)域仪或,而且無法為這些元素指定一個確切的位置,下一個子元素會重疊覆蓋上一個子元素
應(yīng)用場景:適合瀏覽單張圖片。
2. LinearLayout線性布局
布局特點:放主要提供控件水平或者垂直排列的模型士骤,每個子組件
都是以垂直或水平的方式來線性排布.(默認(rèn)是垂直)
應(yīng)用場景:最常用的布局方式
linearLayout中有一個重要的屬性 android:layout_weight="1"范删,這個weight在垂直布局時,代表行距拷肌;水平的時候代表列寬到旦;weight值越大就越大旨巷。
3. AbsoluteLayout絕對定位布局
布局特點:采用坐標(biāo)軸的方式定位組件,左上角是(0添忘,0)點采呐,往右x軸遞增,往下Y軸遞增,組件定位屬性為android:layout_x和 android:layout_y來確定坐標(biāo)搁骑。
應(yīng)用場景:準(zhǔn)確定位空間位置
由于Android手機的屏幕尺寸斧吐、分辨率存在較大差異,使用AbsoluteLayout無法兼顧適配問題仲器,所以該布局已經(jīng)過時
4. RelativeLayout相對布局
布局特點:為某一個組件為參照物会通,來定位下一個組件的位置的布局方式。
應(yīng)用場景:控件之間存在相應(yīng)關(guān)系(適配神器娄周,推薦使用)
5. TableLayout表格布局
布局特點:類似Html里的Table.使用TableRow來布局,其中TableRow代表一行沪停,TableRow的每一個視圖組件代表一個單元格煤辨。
應(yīng)用場景:控件之間存在相應(yīng)關(guān)系。
這五個布局元素可以相互嵌套應(yīng)用木张,做出美觀的界面众辨。
二、布局屬性配置
Android布局里XML的屬性配置
1. 五種Layout中Item的基礎(chǔ)屬性:
layout_width & layout_height
layout_margin+方位 & padding+方位
layout_gravity & gravity
Android五種布局都具備上述幾個基礎(chǔ)屬性
1. layout_width? &? layout_height
作用:設(shè)置Layout中組件的寬度和高度
取值:
a. 固定的像素值
android:layout_width="66px"
b. "wrap_content"
相應(yīng)視圖的寬和高就會被設(shè)定成所需的最小尺寸以適應(yīng)視圖中的內(nèi)容
android:layout_width="wrap_content"
c. “match_parent"(在Android API 8之前叫作"fill_parent")
視圖的寬和高延伸至充滿整個父布局
android:layout_width="match_parent"
2. layout_margin+方位/padding+方位
作用:設(shè)置放入Layout中的View與Layout的邊界或者其他View之間能夠相距一段距離
設(shè)置:
layout_marginLeft? ? ? ? ? //paddingLeft
layout_marginTop? ? ? ? //paddingTop
layout_marginRight? ? ? //paddingRight
layout_marginBottom? //paddingBottom
layout_margin? ? ? ? ? ? //padding
取值:固定值
android:layout_marginLeft="66px"
//android:paddingLeft=”66px“
paddingLeft與android:layout_marginLeft的區(qū)別:
padding和margin都是邊距的含義舷礼,但二者邊距的定義不同:
padding是控件的內(nèi)容相對控件的邊緣的邊距鹃彻;
layout_margin是控件邊緣相對父控件的邊距。具體如下圖:
padding屬性與margin屬性的區(qū)別
3. layout_gravity / gravity
作用:用來確定View在Layout中的推尴祝靠位置
android gravity和layout_gravity區(qū)別:
gravity屬性:是對該view 內(nèi)容的位置的設(shè)置蛛株。
比如一個button 上面的text. 你可以設(shè)置該text 在view的靠左,靠右等位置.
layout_gravity屬性:是用來設(shè)置該view相對與父view 的位置育拨。
比如一個button 在Linearlayout里谨履,你可以通過設(shè)置該屬性把該button放在父布局Linearlayout靠左靠右等位置。
2. 各種Layout的特有屬性
2.1 FrameLayout
作為最簡單的Layout熬丧,只具備基礎(chǔ)屬性:
layout_width & layout_height
layout_margin+方位 & padding+方位
layout_gravity & gravity
2.2 AbsoluteLayout
除了基礎(chǔ)屬性外笋粟,AbsoluteLayout還具備:
layout_x:指定控件的x坐標(biāo)
layout_y:指定控件的x坐標(biāo)
上述屬性的取值均為固定值。
2.3 TableLayout
除了基礎(chǔ)屬性外析蝴,由于TableLayout的行TableRow是一個橫向的(horizontal)的LinearLayout害捕,所以具備LinearLayout的屬性
2.4 LinearLayout
除了基礎(chǔ)屬性,還會有:
orientation
1.作用:設(shè)置布局內(nèi)控件的排列方式
2.取值:vertical(垂直排列-默認(rèn)值)闷畸、horizontal(水平排列)
android:orientation="vertical";
//android:orientation="horizontal";
layout_weight
1.定義:是線性布局(Linelayout)的一個獨特比例分配屬性
2.作用:使用此屬性設(shè)置權(quán)重尝盼,然后按照比例對界面進(jìn)行空間的分配,公式計算是:控件寬度=控件設(shè)置寬度+剩余空間所占百分比寬幅
具體可以參考這篇文章腾啥,講解得非常詳細(xì)
2.5 RelativeLayout
RelativeLayout的屬性算是最多的了东涡,除了基本屬性外冯吓,還有:
a. 相對于父空間
XML屬性 說明
layout_alignParentBottom 當(dāng)前控件底端與父控件的底端對齊
layout_alignParentLeft 當(dāng)前控件左端與父控件的左端對齊
layout_alignParentRight 當(dāng)前控件右端與父控件的右端對齊
layout_alignParentTop 當(dāng)前控件上端與父控件的上端對齊
layout_centerHorizontal 當(dāng)前控件位于父控件的橫向中間位置(水平方向上的中間)
layout_centerVertical 當(dāng)前控件位于父控件的縱向中間位置(平面上的正中間)
layout_centerInParent 當(dāng)前控件位于父控件的縱橫向中間位置(垂直方向上的中間)
上述所有屬性的取值皆為boolean屬性:true、false疮跑。
b. 相對于給定控件
XML屬性 說明
layout_above 使當(dāng)前控件位于給出id控件的上方
layout_below 使當(dāng)前控件位于給出id控件的下方
layout_toLeftOf 使當(dāng)前控件位于給出id控件的左側(cè)
layout_toRightOf 使當(dāng)前控件位于給出id控件的右側(cè)
layout_alignBottom 使當(dāng)前控件與給出id控件的底部部重合
layout_alignLeft 使當(dāng)前控件與給出id控件的左邊重合
layout_alignRight 使當(dāng)前控件與給出id控件的右邊重合
layout_alignTop 使當(dāng)前控件與給出id控件的頂部重合
layout_alignBaseline 使當(dāng)前控件的BaseLine與給出id控件t的BaseLine重合
上述所有屬性的取值皆為給定控件的id名组贺,如下例子
//文本控件@+id/tab_textview在控件@+id/tab_imageview的下方
android:id="@+id/tab_textview"
android:layout_below="@+id/tab_imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
3. 選擇器selector.xml的屬性
3.1 作用
通過設(shè)置selector.xml可使得控件在不同操作下(默認(rèn)、點擊祖娘、焦點等)的顯示不同樣式
3.2 屬性
XML屬性 說明
android:drawable 放一個drawable資源
android:state_pressed 按下狀態(tài)失尖,如一個按鈕觸摸或者點擊。
android:state_focused 取得焦點狀態(tài)渐苏,比如用戶選擇了一個文本框掀潮。
android:state_hovered 光標(biāo)懸停狀態(tài),通常與focused state相同琼富,它是4.0的新特性
android:state_selected 選中狀態(tài)
android:state_enabled 能夠接受觸摸或者點擊事件
android:state_checked 被checked了仪吧,如:一個RadioButton可以被check了。
android:state_enabled 能夠接受觸摸或者點擊事件
上述所有屬性的取值皆為boolean屬性:true鞠眉、false薯鼠。
3.3 實例說明
在drawable添加selector.xml資源文件。
button_selector.xml:
< selector xmlns:android="http://schemas.android.com/apk/res/android">
< !-- 指定按鈕按下時的圖片 -->
android:drawable="@drawable/start_down"
/>
< !-- 指定按鈕松開時的圖片 -->
android:drawable="@drawable/start"
/>
< /selector>
在布局文件main.xml中控件的屬性設(shè)置:
android:id="@+id/startButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_selector"
/>
4. 布局形狀shape.xml的屬性
//默認(rèn)顏色
//哪個方向有邊框線
?
android:bottom="0dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
//邊框線顏色械蹋、大小
? ?
android:width="1dp"
android:color="#000000" />
在布局文件main.xml中控件的屬性設(shè)置:
android:id="@+id/startButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/layout_shape"
/>
三出皇、總結(jié)
本文對Android五大布局介紹&屬性設(shè)置進(jìn)行了全面的介紹。接下來我會介紹繼續(xù)介紹Android開發(fā)中的相關(guān)知識哗戈,有興趣可以繼續(xù)關(guān)注Carson_Ho的安卓開發(fā)筆記
請點贊郊艘!因為你的鼓勵是我寫作的最大動力!
相關(guān)文章閱讀
Android開發(fā):底部Tab菜單欄實現(xiàn)(FragmentTabHost+ViewPager)
Android開發(fā):Handler異步通信機制全面解析(包含Looper唯咬、Message Queue)
Android開發(fā):最全面纱注、最易懂的Android屏幕適配解決方案
Android開發(fā):5分鐘解析Activity&Fragment生命周期
Android開發(fā):JSON簡介及最全面解析方法!
Android開發(fā):XML簡介及DOM、SAX副渴、PULL解析對比
歡迎關(guān)注Carson_Ho的簡書奈附!
不定期分享關(guān)于安卓開發(fā)的干貨,追求短煮剧、平斥滤、快,但卻不缺深度勉盅。
?
?