Android基礎(chǔ)——布局篇(一)

ViewGroup:布局也可以叫做容器醋旦,是承載控件的設(shè)備误证。
Android中的布局有很多種:
LinearLayout線性布局(橫著或豎著按順序排列)
RelativeLayout相對布局(起始坐標(biāo)時屏幕坐上角,以同級或上級為參考系定位位置)
FrameLayout幀布局(像千層餅一樣盖腿,一層壓著一層)
AbsoluteLayout絕對布局(以屏幕左上角為參考系爽待,定位自己的位置损同,從android 2.2版本后廢棄)
GridLayout網(wǎng)格布局(可以指定行數(shù)列數(shù),子控件自動根據(jù)行列數(shù)進行分配位置鸟款,于android 4.0后新增進api中)
TableLayout表格布局(類似于網(wǎng)格布局膏燃,以一個TableRow標(biāo)簽定義為一行或一列)
ConstraintLayout約束布局(google于2016年新發(fā)布的一種布局方式,以同級或上級的邊何什、點组哩、線為自己的限制的布局,它不在android的基礎(chǔ)api包里富俄,需要額外引入)
這些布局除了TableLayout是LinearLayout的子類外禁炒,其余都是ViewGroup的子類,包括LinearLayout,也可以說TableLayout是ViewGroup的孫類霍比。

一幕袱、LinearLayout

線性布局就是從左到右或從上到下按順序排列的一種布局。下面講一講LinearLayout的基礎(chǔ)屬性悠瞬。

(一)们豌、orientation:方向。

方向說的就是線性布局的方向了浅妆,也就是這個線性布局到底是水平方向逐個排列還是垂直方向逐個排列望迎。這個屬性有兩個值vertical(垂直排列),horizontal(水平排列)凌外。
默認值為horizontal

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

</LinearLayout>

(二)辩尊、layout_width和layout_height:寬度、高度康辑。

layout_width和layout_height是android中控件的必要屬性摄欲,分別規(guī)定了控件的寬度和高度,這個兩個屬性的值可以是指定的值疮薇,也可以根據(jù)內(nèi)容自適應(yīng)胸墙,還可以填充整個剩余空間。

(1)match_parent:填充剩余窗體按咒。

(2)wrap_content:根據(jù)子控件的內(nèi)容大小自適應(yīng)迟隅。

(3)fill_parent:就是match_parent。

聽說從android 2.2以前是沒有match_parent的從android 2.2引入match_parent以后励七,fill_parent就定義為了match_parent智袭,之前的事我也不是太了解了,畢竟我接觸android開發(fā)時掠抬,已經(jīng)是android 4.4的時期了补履。

(4)自定義大小:例如50dp剿另、100px。

至于dp、px等單位雨女,以后單獨說谚攒。

二、效果

只看代碼和敘述可能比較難以理解氛堕,下面結(jié)合圖來理解LinearLayout馏臭。

<?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:background="#FF0000"
    android:orientation="vertical">

    <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" />

</LinearLayout>

我定義了一個垂直的線性布局,里面有三個按鈕讼稚,按鈕以后再說括儒。它們的排列方式是這樣的。


android:orientation="vertical".png

如果把android:orientation屬性換成horizontal就變成了這樣


android:orientation="horizontal".png

這回就更容易理解了锐想,一個是把內(nèi)部的按鈕水平排列帮寻,另一個是垂直排列。
再來看看match_parent和wrap_content的區(qū)別
<?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:background="#FF0000"
    android:orientation="vertical">

    <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" />

</LinearLayout>
android:layout_width="match_parent".png

為了方便觀察赠摇,我把LinearLayout的背景設(shè)置了一個顏色固逗,這樣更方便看出它的大小。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:background="#FF0000"
    android:orientation="vertical">

    <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" />

</LinearLayout>
android:layout_width="wrap_content".png

如果把layout_width換成wrap_content藕帜,寬度就不會填充滿整個屏幕了烫罩,就變成了和內(nèi)部最寬的控件一樣寬,高度也類似洽故。


android:layout_width="200dp".png

另外贝攒,把layout_width設(shè)置成了200dp后就變成了上面這樣,它的寬度就被固定了时甚。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末隘弊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子撞秋,更是在濱河造成了極大的恐慌长捧,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吻贿,死亡現(xiàn)場離奇詭異串结,居然都是意外死亡,警方通過查閱死者的電腦和手機舅列,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門肌割,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人帐要,你說我怎么就攤上這事把敞。” “怎么了榨惠?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵奋早,是天一觀的道長盛霎。 經(jīng)常有香客問我,道長耽装,這世上最難降的妖魔是什么愤炸? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮掉奄,結(jié)果婚禮上规个,老公的妹妹穿的比我還像新娘。我一直安慰自己姓建,他們只是感情好诞仓,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著速兔,像睡著了一般墅拭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上憨栽,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天帜矾,我揣著相機與錄音,去河邊找鬼屑柔。 笑死屡萤,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的掸宛。 我是一名探鬼主播死陆,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼唧瘾!你這毒婦竟也來了措译?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤饰序,失蹤者是張志新(化名)和其女友劉穎领虹,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體求豫,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡塌衰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蝠嘉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片最疆。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蚤告,靈堂內(nèi)的尸體忽然破棺而出努酸,到底是詐尸還是另有隱情,我是刑警寧澤杜恰,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布获诈,位于F島的核電站仍源,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏烙荷。R本人自食惡果不足惜镜会,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望终抽。 院中可真熱鬧,春花似錦桶至、人聲如沸昼伴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽圃郊。三九已至,卻和暖如春女蜈,著一層夾襖步出監(jiān)牢的瞬間持舆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工伪窖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留逸寓,地道東北人。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓覆山,卻偏偏與公主長得像竹伸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子簇宽,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354

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