天天看點

【Android應用開發技術:使用者界面】布局管理器

【Android應用開發技術:使用者界面】章節清單

布局管理繼承于ViewGroup。它用來管理Android應用使用者界面裡各元件,它的使用使得Android應用的圖形使用者界面具有良好的平台無關性。

常見的布局方式例如以下所看到的:

  • 線性布局
  • 表格布局
  • 幀布局
  • 相對布局
  • 網絡布局

一 線性布局

線性布局。即LinearLayout,控制容器内的元件橫向或縱向地一個挨着一個排列起來。

1.1 線性布局特點

例如以下圖所看到的:

【Android應用開發技術:使用者界面】布局管理器

線性布局并不會自己主動換行,當一行元件徘滿時,多出的元件不會顯示出來。

1.2 線性布局屬性

屬性名稱 屬性說明
android:gravity 設定線性布局的内部元素的布局對齊方式

android:gravity 取值例如以下所看到的:

  • top 不改變控件大小,對齊到容器頂部
  • bottom 不改變控件大小,對齊到容器底部
  • left 不改變控件大小,對齊到容器左側
  • right 不改變控件大小,對齊到容器右側
  • center_vertical 不改變控件大小,對齊到容器縱向中央位置
  • center_horizontal 不改變控件大小,對齊到容器橫向中央位置
  • center 不改變控件大小。對齊到容器中央位置
  • fill_vertical 若有可能,縱向拉伸以填滿容器
  • fill_horizontal 若有可能,橫向拉伸以填滿容器
  • fill 若有可能,縱向橫向同一時候拉伸以填滿容器

二 表格布局

表格布局,即TableLayout,繼承于LinearLayout。它通過行、列的形式管理UI元件。

2.1 表格布局特點

  1. TableLayout通過加入TableRow和其它元件來控制表格的行數和列數。每一個TabRow就是一個表格行,TableRow也是容器,也能夠在TableRow中加入其它元件。
  2. 假設直接在TableLayout中加入一個元件。那麼這個元件則獨占一行。
  3. TableLayout中列的寬度由該列中最寬的那個單元格決定,整個表格布局的寬度則取決于父容器的寬度。
  4. 單元格的設定有下面三種行為方式:
  • Shrinkable:該列全部單元格能夠被收縮,以保證該表格能适應父容器的寬度。
  • Stretchable:該列全部單元格能夠被拉伸,以保證元件能夠全然填滿表格空餘空間。
  • Collapsed:該列全部單元格會被隐藏。

三 幀布局

幀布局。即FrameLayout。它繼承了ViewGroup。幀布局為每一個加入當中的元件建立一個空白的區域,稱為一幀。每一個子元件占領一幀。幀布局是元素的互相疊加。

四 相對布局

相對布局。即RelativeLayout,相對布局内子元件的位置總是相對于兄弟元件和父容器來決定的。

4.1 相對布局特點

相對布局例如以下圖所看到的:

【Android應用開發技術:使用者界面】布局管理器

4.2 相對布局屬性

4.2.1 RelativeLayout中取值為true或false的屬性清單

android:layout_centerHorizontal 目前控件位于父控件的橫向中間位置
android:layout_centerVertical 目前控件位于父控件的縱向中間位置
android:layout_centerInParent 目前控件位于父控件的中央位置
android:layout_alignParentBottom 目前控件底端與父控件底端對齊
android:layout_alignParentLeft 目前控件左側與父控件左側對齊
android:layout_alignParentRight 目前控件右側與父控件右側對齊
android:layout_alignParentTop 目前控件頂端與父控件頂端對齊
android:layout_alignWithParentIfMissing 參照控件不存在或不可見時參照父控件

4.2.2 RelativeLayout中取值為其它控件id的屬性清單

android:layout_toRightOf 使目前控件位于給出id控件的右側
android:layout_toLeftOf 使目前控件位于給出id控件的左側
android:layout_above 使目前控件位于給出id控件的上方
android:layout_below 使目前控件位于給出id控件的下方
android:layout_alignTop 使目前控件的上邊界與給出id控件的上邊界對齊
android:layout_alignBottom 使目前控件的下邊界與給出id控件的下邊界對齊
android:layout_alignLeft 使目前控件的左邊界與給出id控件的左邊界對齊
android:layout_alignRight 使目前控件的右邊界與給出id控件的右邊界對齊

4.2.3 RelativeLayout中取值為像素的屬性清單

android:layout_marginLeft 目前控件左側的留白
android:layout_marginRight 目前控件右側的留白
android:layout_marginTop 目前控件上方的留白
android:layout_marginBottom 目前控件下方的留白
android:layout_margin 目前控件上下左右四個方向的留白
android:paddingLeft 目前控件中内容距離控件左邊留白
android:paddingRight 目前控件中内容距離控件右邊留白
android:paddingTop 目前控件中内容距離控件頂部留白
android:paddingBottom 目前控件中内容距離控件底部留白

五 網絡布局

網絡布局,即GridLayout,它将容器劃分為row x column個網格。每一個網格能夠放置一個元件。在該布局内。一個元件能夠橫跨多行,也能夠橫跨多列。

網絡布局例如以下圖所看到的:

【Android應用開發技術:使用者界面】布局管理器