安卓布局宴胧,

前言

在進(jìn)行Android開發(fā)中漱抓,常常需要用到各種布局來進(jìn)行UI的繪制,今天我們就來講下Android開發(fā)中最常用的五大布局介紹和相關(guān)屬性的設(shè)置恕齐。

目錄

圖片發(fā)自簡書App

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ā)的干貨,追求短煮剧、平斥滤、快,但卻不缺深度勉盅。

?

?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末佑颇,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子草娜,更是在濱河造成了極大的恐慌挑胸,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宰闰,死亡現(xiàn)場離奇詭異茬贵,居然都是意外死亡簿透,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門解藻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來老充,“玉大人,你說我怎么就攤上這事螟左》茸牵” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵胶背,是天一觀的道長巷嚣。 經(jīng)常有香客問我,道長钳吟,這世上最難降的妖魔是什么廷粒? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮红且,結(jié)果婚禮上评雌,老公的妹妹穿的比我還像新娘。我一直安慰自己直焙,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布砂轻。 她就那樣靜靜地躺著奔誓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪搔涝。 梳的紋絲不亂的頭發(fā)上厨喂,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音庄呈,去河邊找鬼蜕煌。 笑死,一個胖子當(dāng)著我的面吹牛诬留,可吹牛的內(nèi)容都是我干的斜纪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼文兑,長吁一口氣:“原來是場噩夢啊……” “哼盒刚!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起绿贞,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤因块,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后籍铁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涡上,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡趾断,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了吩愧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芋酌。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖耻警,靈堂內(nèi)的尸體忽然破棺而出隔嫡,到底是詐尸還是另有隱情,我是刑警寧澤甘穿,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布腮恩,位于F島的核電站毅往,受9級特大地震影響寥裂,放射性物質(zhì)發(fā)生泄漏甫恩。R本人自食惡果不足惜全谤,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一狠持、第九天 我趴在偏房一處隱蔽的房頂上張望合是。 院中可真熱鬧火窒,春花似錦甚垦、人聲如沸届垫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽装处。三九已至误债,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間妄迁,已是汗流浹背寝蹈。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留登淘,地道東北人箫老。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像黔州,于是被迫代替她去往敵國和親耍鬓。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容