Android中常見的佈局和佈局參數

前言

前幾篇文章複習總結了Android的四大組件,如今開始複習Android中經常使用的佈局包括如下幾種,先從LinearLayout開始提及android

  • LinearLayout
  • RelativeLayout
  • FrameLayout
  • TableLayout
  • AbsoluteLayout
  • ContraintLayout

1、LinearLayout(線性佈局)

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>
複製代碼

2、RelativeLayout(相對佈局)

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>
複製代碼

3、FrameLayout(幀佈局)

FrameLayout是一種將每一個子View當作一幀,層疊顯示的Viewblog

該佈局沒有比較特別的屬性,就只是一層層的疊加繼承

4、TableLayout(表格佈局)

TableLayout繼承與LinearLayout,將其子View橫向或者豎向排列,通常子View是TableRow圖片

表格佈局有如下幾個重要的屬性

  • android:collapseColumns 隱藏那幾列,好比0,2表示隱藏第一、3兩列
  • android:stretchColumns 設置哪些列能夠被拉伸,若是水平方向還有空餘的空間則拉伸這些列
  • android:shrinkColumns 設置哪些列能夠收縮,當水平方向空間不夠時會進行收縮

5、AbsoluteLayout(絕對佈局)

AbsoluteLayout因爲沒法適配屏幕在API3已經被標爲過期了

6、ContraintLayout(約束佈局)

ContraintLayout是一種容許您以靈活的方式定位和調整小部件的佈局

使用該佈局可以顯著的解決佈局嵌套過多的問題。

相關文章
相關標籤/搜索