Android之LinearLayout(線性布局)

本節(jié)引言

本節(jié)開始講Android中的布局七婴,Android中有六大布局,分別是: LinearLayout(線性布局),RelativeLayout(相對(duì)布局)拟逮,TableLayout(表格布局) FrameLayout(幀布局)韩玩,AbsoluteLayout(絕對(duì)布局),GridLayout(網(wǎng)格布局) 而今天我們要講解的就是第一個(gè)布局损谦,LinearLayout(線性布局)岖免,我們屏幕適配的使用 用的比較多的就是LinearLayout的weight(權(quán)重屬性),在這一節(jié)里,我們會(huì)詳細(xì)地解析 LinearLayout,包括一些基本的屬性

1.本節(jié)學(xué)習(xí)圖

2.weight(權(quán)重)屬性詳解:

①最簡(jiǎn)單用法:

如圖:



實(shí)現(xiàn)代碼:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
    xmlns:tools="http://schemas.android.com/tools"    
    android:id="@+id/LinearLayout1"    
    android:layout_width="match_parent"    
    android:layout_height="match_parent"    
    android:orientation="horizontal">    
        
    <LinearLayout    
        android:layout_width="0dp"    
        android:layout_height="fill_parent"    
        android:background="#ADFF2F"     
        android:layout_weight="1"/>    
       
        
    <LinearLayout    
        android:layout_width="0dp"    
        android:layout_height="fill_parent"    
        android:background="#DA70D6"     
        android:layout_weight="2"/>    
        
</LinearLayout> 

要實(shí)現(xiàn)第一個(gè)的1:1的效果,只需要分別把兩個(gè)LinearLayout的weight改成1和1就可以了 用法歸納: 按比例劃分水平方向:將涉及到的View的android:width屬性設(shè)置為0dp,然后設(shè)置為android weight屬性設(shè)置比例即可;類推,豎直方向,只需設(shè)android:height為0dp,然后設(shè)weight屬性即可岳颇! 大家可以自己寫個(gè)豎直方向的等比例劃分的體驗(yàn)下簡(jiǎn)單用法照捡!

②weight屬性詳解:

當(dāng)然,如果我們不適用上述那種設(shè)置為0dp的方式,直接用wrap_content和match_parent的話, 則要接著解析weight屬性了,分為兩種情況,wrap_content與match_parent!另外還要看 LinearLayout的orientation是水平還是豎直,這個(gè)決定哪個(gè)方向等比例劃分
1)wrap_content比較簡(jiǎn)單,直接就按比例的了


實(shí)現(xiàn)代碼:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
    xmlns:tools="http://schemas.android.com/tools"    
    android:id="@+id/LinearLayout1"    
    android:layout_width="match_parent"    
    android:layout_height="match_parent"  
    android:orientation="horizontal" >    
    
    <TextView    
        android:layout_weight="1"    
        android:layout_width="wrap_content"    
        android:layout_height="fill_parent"    
        android:text="one"     
        android:background="#98FB98"    
     />    
     <TextView    
        android:layout_weight="2"    
        android:layout_width="wrap_content"    
        android:layout_height="fill_parent"    
        android:text="two"     
        android:background="#FFFF00"    
     />    
     <TextView    
        android:layout_weight="3"    
        android:layout_width="wrap_content"    
        android:layout_height="fill_parent"    
        android:text="three"     
        android:background="#FF00FF"    
     />    
    
</LinearLayout>  

2)match_parent(fill_parent):這個(gè)則需要計(jì)算了
我們寫這段簡(jiǎn)單的代碼:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
    xmlns:tools="http://schemas.android.com/tools"    
    android:id="@+id/LinearLayout1"    
    android:layout_width="match_parent"    
    android:layout_height="match_parent" >    
    
    <TextView    
        android:layout_weight="1"    
        android:layout_width="fill_parent"    
        android:layout_height="fill_parent"    
        android:text="one"     
        android:background="#98FB98"    
     />    
     <TextView    
        android:layout_weight="2"    
        android:layout_width="fill_parent"    
        android:layout_height="fill_parent"    
        android:text="two"     
        android:background="#FFFF00"    
     />    
     <TextView    
        android:layout_weight="3"    
        android:layout_width="fill_parent"    
        android:layout_height="fill_parent"    
        android:text="three"     
        android:background="#FF00FF"    
     />    
    
</LinearLayout> 

運(yùn)行效果圖:


這個(gè)時(shí)候就會(huì)有疑問了,怎么會(huì)這樣,這比例是2:1吧,那么three去哪了话侧?代碼里面明明有 three的啊,還設(shè)置了3的,而1和2的比例也不對(duì)耶,1:2:3卻變成了2:1:0,怎么會(huì)這樣呢? 答:這里其實(shí)沒那么簡(jiǎn)單的,還是需要我們計(jì)算的,網(wǎng)上給出的算法有幾種,這里就給出筆者 覺得比較容易理解的一種: step 1:個(gè)個(gè)都是fill_parent,但是屏幕只有一個(gè)啦,那么1 - 3 = - 2 fill_parent step 2:依次比例是1/6,2/6,3/6 step 3:先到先得,先分給one,計(jì)算: 1 - 2 * (1/6) = 2/3 fill_parent 接著到two,計(jì)算: 1 - 2 * (2/6) = 1/3 fill_parent 最后到three,計(jì)算 1 - 2 * (3/6) = 0 fill_parent step 4:所以最后的結(jié)果是:one占了兩份,two占了一份,three什么都木有 以上就是為什么three沒有出現(xiàn)的原因了,或許大家看完還是有點(diǎn)蒙,沒事,我們舉多幾個(gè)例子試試就知道了栗精!

比例為:1:1:1


按照上面的計(jì)算方法算一次,結(jié)果是:1/3 1/3 1/3,沒錯(cuò)
接著我們?cè)僭囅?2:3:4

計(jì)算結(jié)果:5/9 3/9 1/9,對(duì)比效果圖,5:3:1,也沒錯(cuò),所以這個(gè)計(jì)算方法你可得mark下了!

③Java代碼中設(shè)置weight屬性:

setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,     
        LayoutParams.WRAP_CONTENT, 1)); 

注意

基本上Linearlayout的布局差不多只有這些,這里需要注意的是

當(dāng) android:orientation="vertical" 時(shí)瞻鹏, 只有水平方向的設(shè)置才起作用悲立,垂直方向的設(shè)置不起作用。 即:left新博,right薪夕,center_horizontal 是生效的。 當(dāng) android:orientation="horizontal" 時(shí)赫悄, 只有垂直方向的設(shè)置才起作用原献,水平方向的設(shè)置不起作用。 即:top埂淮,bottom姑隅,center_vertical 是生效的。
當(dāng)需要設(shè)置控件一個(gè)在左一個(gè)在右倔撞,筆者建議大家使用 RelativeLayout!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末讲仰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子痪蝇,更是在濱河造成了極大的恐慌鄙陡,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,430評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件躏啰,死亡現(xiàn)場(chǎng)離奇詭異柔吼,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)丙唧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門愈魏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事培漏∠澹” “怎么了?”我有些...
    開封第一講書人閱讀 167,834評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵牌柄,是天一觀的道長(zhǎng)畸悬。 經(jīng)常有香客問我,道長(zhǎng)珊佣,這世上最難降的妖魔是什么蹋宦? 我笑而不...
    開封第一講書人閱讀 59,543評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮咒锻,結(jié)果婚禮上冷冗,老公的妹妹穿的比我還像新娘。我一直安慰自己惑艇,他們只是感情好蒿辙,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著滨巴,像睡著了一般思灌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上恭取,一...
    開封第一講書人閱讀 52,196評(píng)論 1 308
  • 那天泰偿,我揣著相機(jī)與錄音,去河邊找鬼蜈垮。 笑死耗跛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的窃款。 我是一名探鬼主播课兄,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼晨继!你這毒婦竟也來了烟阐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,671評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤紊扬,失蹤者是張志新(化名)和其女友劉穎蜒茄,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體餐屎,經(jīng)...
    沈念sama閱讀 46,221評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡檀葛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了腹缩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屿聋。...
    茶點(diǎn)故事閱讀 40,444評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡空扎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出润讥,到底是詐尸還是另有隱情转锈,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評(píng)論 5 350
  • 正文 年R本政府宣布楚殿,位于F島的核電站撮慨,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏脆粥。R本人自食惡果不足惜砌溺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望变隔。 院中可真熱鬧规伐,春花似錦、人聲如沸弟胀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽孵户。三九已至,卻和暖如春岔留,著一層夾襖步出監(jiān)牢的瞬間夏哭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評(píng)論 1 272
  • 我被黑心中介騙來泰國打工献联, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留竖配,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,837評(píng)論 3 376
  • 正文 我出身青樓里逆,卻偏偏與公主長(zhǎng)得像进胯,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子原押,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評(píng)論 2 359

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