Android應用開發之線性佈局

Android中有六大布局,分別是:

  • LinearLayout(線性佈局)
  • RelativeLayout(相對佈局)
  • TableLayout(表格佈局)
  • FrameLayout(幀佈局)
  • AbsoluteLayout(絕對佈局)
  • GridLayout(網格佈局)

今天我們要講解的就是第一個佈局,LinearLayout(線性佈局)

LinearLayout

LinearLayout又稱作線性佈局,是一種非常常用的佈局。

這個佈局會將它所包含的控件在線性方向上依次排列。

既然是線性排列,肯定就不僅只有一個方向,這裏一般只有兩個方向:水平方向和垂直方向。

屬性

LinearLayout(線性佈局)常用到的屬性簡單歸納一下:

屬性名 解釋
android:orientation 指定線性佈局的方向(水平或者垂直)
android:width 線性佈局的容器寬度
android:height 線性佈局的容器高度
android:background 線性佈局的背景
android:gravity 線性佈局中,子容器相對於父容器所在的位置
android:layout_gravity 容器相對它的父元素的對齊方式
android:layout_weight 權重,按比例來分配控件佔用父控件的大小
android:divider 分割線
android:showDivider 分割線的位置
android:dividerPadding 分割線的padding
orientation
屬性值 解釋
android:orientation="horizontal" 指定線性佈局方向:水平
android:orientation="vertical" 指定線性佈局方向:垂直
width
屬性值 解釋
android:width="xxxdp" 指定線性佈局的容器寬度爲:xxxdp
android:width="wrap_content" 指定線性佈局的容器寬度爲:根據容器內容寬度大小來填充屏幕寬度
android:width="match_parent" 指定線性佈局的容器寬度爲:撐滿整個屏幕寬度
height
屬性值 解釋
android:height="xxxdp" 指定線性佈局的容器高度爲:xxxdp
android:height="wrap_content" 指定線性佈局的容器高度爲:根據容器內容高度大小來填充屏幕高度
android:height="match_parent" 指定線性佈局的容器高度爲:撐滿整個屏幕高度
background
屬性值 解釋
android:background="#000" 指定線性佈局的背景爲:黑色(rgb顏色)
android:background="@android:color/black" 指定線性佈局的背景爲:黑色(引用android系統自帶的原始黑色)
andrid:background="@color/colorPrimary" 指定線性佈局的背景爲:(根據res/color.xml 中的colorPrimary所定義的顏色設置)
gravity

自身是父容器

屬性值 解釋
android:gravity="center" 指定線性佈局中,子容器相對於父容器所在的位置爲:正中心
android:gravity="cente_verticalr" 指定線性佈局中,子容器相對於父容器所在的位置爲:垂直方向的正中心
android:gravity="center_horizontal" 指定線性佈局中,子容器相對於父容器所在的位置爲:水平方向的正中心
android:gravity="left" 指定線性佈局中,子容器相對於父容器所在的位置爲:最左邊(默認)
android:gravity="right" 指定線性佈局中,子容器相對於父容器所在的位置爲:最右邊
android:gravity="top" 指定線性佈局中,子容器相對於父容器所在的位置爲:最上方(默認)
android:gravity="bottom" 指定線性佈局中,子容器相對於父容器所在的位置爲:最下方
layout_gravity

自身是子容器

屬性值 解釋
android:gravity="center" 指定線性佈局中,子容器相對於父容器所在的位置爲:正中心
android:gravity="cente_verticalr" 指定線性佈局中,子容器相對於父容器所在的位置爲:垂直方向的正中心
android:gravity="center_horizontal" 指定線性佈局中,子容器相對於父容器所在的位置爲:水平方向的正中心
android:gravity="left" 指定線性佈局中,子容器相對於父容器所在的位置爲:最左邊(默認)
android:gravity="right" 指定線性佈局中,子容器相對於父容器所在的位置爲:最右邊
android:gravity="top" 指定線性佈局中,子容器相對於父容器所在的位置爲:最上方(默認)
android:gravity="bottom" 指定線性佈局中,子容器相對於父容器所在的位置爲:最下方
layout_weight

當我們給一個view設置了android:layout_weight屬性,意味着賦予它話語權,常規思維就是誰的weight大,誰說了算(空間佔比大)。

屬性值 解釋
android:layout_weight="2" 該單元權重爲2
divider

這個屬性可以在LinearLayout的每個子佈局直間添加一個“drawable”作爲分割線,這個drawable必須有設定好的高度或者寬度,因此不能直接設置爲“@color/….”

這個屬性要和android:showDividers一起使用纔會生效
android:showDividers有“begining”,“middle”,“end”,“none”四種值。默認值爲“none”,即不顯示分割線。

使用方式:

  1. 新建一個固有的width/height的Drawable:
<?xml version="1.0" encoding="utf-8"?>  
<shape xmlns:android="http://schemas.android.com/apk/res/android"  
    android:shape="rectangle">  
  
    <size  
        android:width="@dimen/spacing_medium"  
        android:height="@dimen/spacing_medium" />  
  
    <solid android:color="@android:color/transparent" />  
  
</shape>  

設置LinearLayout的android:divider="@drawable/spacer_medium",並設置android:showDividers

android:showDividers
屬性值 解釋
android:showDividers=”beginning” 只有第一個子控件上面有一條分割線
android:showDividers=”middle” 每個子空間之間都有一條分割線
android:showDividers=”end” 只有最後一個子控件有一條分割線
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章