標籤:
本文將詳細介紹線性布局的各種xml屬性。
xml屬性
<?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:orientation="vertical"></LinearLayout>
①android:layout_width---->設定此布局的寬度,有三種模式:
fill_parent:充滿螢幕(已淘汰,用下面的match_parent代替)
match_parent:充滿螢幕(推薦)
wrap_parent:包含組件,意思就是你的組件多大,那麼就佔多大的空間。
②android:layout_height---->設定此布局的高度,模式同上;
③android:orientation---->此屬性設定此線性布局的方式,有兩個參數:
vertical:垂直布局:即子控制項都在子控制項的上下位置,例如
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> //這裡選用垂直布局 <Button android:layout_width="match_parent" //寬度充滿螢幕 android:layout_height="wrap_content" //高度包含組件 android:text="FirstButton" android:id="@+id/button" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="SecondButton" android:id="@+id/button2" /></LinearLayout>
顯示結果:
horizontal:水平布局:即子控制項都在子控制項的左右位置。例如:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> //這裡設定為水平布局, <Button android:layout_width="wrap_content" //寬度包含組件 android:layout_height="match_parent" //這裡設定Button控制項的高度充滿螢幕 android:text="FirstButton" android:id="@+id/button" /> <Button android:layout_width="wrap_content" android:layout_height="match_parent" android:text="SecondButton" android:id="@+id/button2" /></LinearLayout>
顯示結果:
④android:baselineAligned---->此布局中的子控制項是否基準對齊,其實就是設定在不在一條線上,他只有兩個參數,true和false
false:若設定false,那麼他裡面的內容就不對齊。
true:若設定true,那麼就對齊。 例如:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:baselineAligned="false" //這裡設定為false android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="hello " android:textSize="24sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="world" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="hello world" android:textSize="45sp" /></LinearLayout>
顯示結果:
當設定為true時:
結果一目瞭然。
⑤android:gravity:指定布局裡面的子控制項的位置,幾個常用參數,可以接受兩個參數中間用”|“分隔開
center:控制項處於布局的中心位置。
left:控制項位於布局的左邊。
right:控制項位於布局的右邊。
center|left:控制項位於布局的中左位置。(也可以用center_vertical,和這個同樣的作用)
官方給出的屬性:
大家可以見明知義。例子:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center|left" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="hello " android:textSize="24sp" /></LinearLayout>
顯示結果為:
⑥android:layout_gravity:是指此子控制項在布局中的位置。參數同上:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="hello " android:gravity="left" android:textSize="24sp" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="hello " android:textSize="24sp" android:layout_gravity="center" /></LinearLayout>
顯示結果:
⑦android:divider:繪製子組件之間的分割線,參數可以是一個圖片也可以是一個xml的shape標記,圖片或者shape位於drawable下
android:showDividers:顯示分割線的方式,有四種:
begging:在整體的上方添加
middle:在每個組件之間添加
end:在整體的下方添加
none:不顯示
例如:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:divider="@drawable/shapee" //這裡引用的shapee為一個xml檔案,代碼在下面 android:showDividers="middle" //這裡顯示方法為在每個組件之間添加 android:orientation="vertical">
shapee.xml檔案
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#00ff00" /> //此屬性指定顏色 <size android:height="5px" /> //分割線的高度</shape>
效果如下:
⑧android:weightSum:設定子控制項中weight中的總和,其實就是控制子控制項與螢幕或者其他子控制項的比例,個人感覺這個比較重要,對於布局有很好的作用。
例如一下代碼:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" //布局設定為水平布局 android:weightSum="1" //設定子控制項的weight總和為1 > <Button android:layout_width="0dp" //這裡設定為0是為了好計算,計算公式在下面介紹 android:layout_height="wrap_content" android:layout_weight="0.5" //這裡設定weight(權值)為0.5,也就是佔用了一行的一半。 android:text="hello " android:textSize="24sp" /> <Button android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.4" //這裡是0.4,就是40%,還有1-0.5-0.4=0.1為空白 android:text="hello " android:textSize="24sp" /></LinearLayout>
顯示結果:
計算公式: 此執行個體中Button的寬度計算:{ Button的width值+Button的weight*父控制項width(這裡是match_content,
如果父控制項為200dp,那麼這裡就是200)/ weightSum的值 }
Android布局之線性布局——LinearLayout