前幾篇文章複習總結了Android的四大組件,如今開始複習Android中經常使用的佈局包括如下幾種,先從LinearLayout開始提及android
LinearLayout是一種將其子View水平單列或者垂直單行進行排列的佈局ide
線性佈局有如下三個重要的屬性佈局
android:orientation
取值爲vertical或者horizontal,分別表示垂直佈局和水平佈局android:layout_weight
權重,應用場景主要有須要按比例分配空間或者填充剩餘空間android:layout_gravity
重心,當orientation爲vertical時left和right生效,爲horizontal時top和bottom生效android:divider
分割線圖片,須要配合下面那個屬性android:showDividers
顯示分割線的位置四選一,none、begin、end、middle假設須要實現把一個EditText和Bottom放置於一行而且EditText填充除了Button之外的全部區域,咱們可使用如下代碼實現spa
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal">
<EditText android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1"/>
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="send"/>
</LinearLayout>
複製代碼
RelativeLayout是一種子View可以描述與其它子View或者父View之間相對關係的佈局.net
相對佈局有如下幾個重要的屬性code
android:layout_alignTop
與指定View的頂部對齊android:layout_alignBottom
與指定View的底部對齊android:layout_alignLeft
與指定View的左邊對齊android:layout_alignRight
與指定View的右邊對齊android:layout_alignParentTop
與父View的頂部對齊android:layout_alignParentBottom
與父View的底部對齊android:layout_alignParentLeft
與父View的左邊對齊android:layout_alignParentRight
與父View的頂部對齊android:layout_toLeftOf
當前View的Right與指定View的左邊對齊android:layout_toRightOf
當前View的Left與指定View的右邊對齊android:layout_above
當前View的Bottom與指定View的上面對齊android:layout_alignBaseLine
當前View的文本底部與指定View的文本底部對齊android:layout_centerHorizontal
是否水平居中android:layout_centerVertical
是否垂直居中android:layout_centerInParent
是否水平垂直居中於父View這裏以列表中的一個Item爲例左邊是一張圖片,右邊上面是一個Title,下面是subTitlexml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity">
<ImageView android:id="@+id/iv" android:layout_width="50dp" android:layout_height="50dp" android:layout_margin="10dp" android:background="@mipmap/ic_launcher" android:layout_alignParentLeft="true"/>
<TextView android:id="@+id/tv_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_toRightOf="@id/iv" android:layout_alignTop="@id/iv" android:text="我是標題"/>
<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="" android:layout_toRightOf="@id/iv" android:layout_below="@+id/tv_title" android:text="我是子標題"/>
</RelativeLayout>
複製代碼
FrameLayout是一種將每一個子View當作一幀,層疊顯示的Viewblog
該佈局沒有比較特別的屬性,就只是一層層的疊加繼承
TableLayout繼承與LinearLayout,將其子View橫向或者豎向排列,通常子View是TableRow圖片
表格佈局有如下幾個重要的屬性
android:collapseColumns
隱藏那幾列,好比0,2表示隱藏第一、3兩列android:stretchColumns
設置哪些列能夠被拉伸,若是水平方向還有空餘的空間則拉伸這些列android:shrinkColumns
設置哪些列能夠收縮,當水平方向空間不夠時會進行收縮AbsoluteLayout因爲沒法適配屏幕在API3已經被標爲過期了
ContraintLayout是一種容許您以靈活的方式定位和調整小部件的佈局
使用該佈局可以顯著的解決佈局嵌套過多的問題。