Android佈局控件之LinearLayout詳解android
LinearLayout是線性佈局控件,它包含的子控件將以橫向或豎向的方式排列,按照相對位置來排列全部的widgets或者其餘的containers,超過邊界時,某些控件將缺失或消失。所以一個垂直列表的每一行只會有一個widget或者是container,而無論他們有多寬,而一個水平列表將會只有一個行高(高度爲最高子控件的高度加上邊框高度)。LinearLayout保持其所包含的widget或者是container之間的間隔以及互相對齊(相對一個控件的右對齊、中間對齊或者左對齊)。佈局
xml屬性xml
android:baselineAligned:是否容許用戶調整它內容的基線。對象
android:baselineAlignedChildIndex:當一個線性佈局與另外一個佈局是按基線對齊的一部分,它能夠指定其內容的基線對齊方式。ip
android:gravity:指定如何在該對象中放置此對象的內容(x/y座標值)。utf-8
android:orientation:設置它內容的對其方向(橫向/豎向)。get
gravity 這個英文單詞是重心的意思,在這裏就表示停靠位置的意思。it
android:layout_gravity 和 android:gravity 的區別io
從名字上能夠看到,android:gravity是對元素自己說的,元素自己的文本顯示在什麼地方靠着換個屬性設置,不過不設置默認是在左側的。cli
android:layout_gravity是相對與它的父元素說的,說明元素顯示在父元素的什麼位置。
好比說button:android:layout_gravity 表示按鈕在界面上的位置。 android:gravity表示button上的字在button上的位置。
可選值
這兩個屬性可選的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical。
並且這些屬性是能夠多選的,用「|」分開。
默認這個的值是:Gravity.LEFT
LinearLayout還支持爲其包含的widget或者是container指定填充權值。好處就是容許其包含的widget或者是container能夠填充屏幕上的剩餘空間。這也避免了在一個大屏幕中,一串widgets或者是containers擠成一堆的狀況,而是容許他們放大填充空白。剩餘的空間會按這些widgets或者是containers指定的權值比例分配屏幕。默認的 weight 值爲0,表示按照widgets或者是containers實際大小來顯示,若高於0的值,則將Container剩餘可用空間分割,分割大小具體取決於每個widget或者是container的layout_weight及該權值在全部widgets或者是containers中的比例。例如,若是有三個文本框,其中兩個指定的權值爲1,那麼,這兩個文本框將等比例地放大,並填滿剩餘的空間,而第三個文本框不會放大,按實際大小來顯示。若是前兩個文本框的取值一個爲2,一個爲1,顯示第三個文本框後剩餘的空間的2/3給權值爲2的,1/3大小給權值爲1的。也就是權值越大,重要度越大。
若是LinearLayout包含子LinearLayout,子LinearLayout之間的權值越大的,重要度則越小。若是有LinearLayout A包含LinearLayout C,D,C的權值爲2,D的權值爲1,則屏幕的2/3空間分給權值爲1的D,1/3分給權值爲2的C。在LinearLayout嵌套的狀況下,子LinearLayout必需要設置權值,不然默認的狀況是未設置權值的子LinearLayout佔據整個屏幕
1.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:baselineAligned="true"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<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>
2.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:baselineAligned="true"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<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>
3.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:baselineAligned="true"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal"
>
<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>