- LinearLayout
- TableLayout
- RelativeLayout
- FrameLayout
- AbsoluteLayout - deprecated
LinearLayout
以水平或垂直方向一個接一個排隊。
orientation - horizontal / vertical
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="新遊戲"/> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="設定"/> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="離開"/> </LinearLayout>
layout_width / layout_height - fill_parent / wrap_content
- fill_parent - 以 parent container 的寬度或高度為依據,也就是使用到最大極限。
- wrap_content - 以 container 內的內容寬度或高度為依據,也就是隨著內容而變化。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="新遊戲"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="設定"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="離開"/> </LinearLayout>
在 parent 的 layout_width 與 layout_height 都用 filll_parent 的情況下,如果三個 Button 的 layout_width 與 layout_height 都用 filll_parent 的話,會只看到第一個 Button 佔滿整個螢幕,看不到其他兩個 Button,如果前兩個 Button 的 layout_height 是用 wrap_content,而最後一個的 layout_height 是用 fill_content,則會出現前兩個 Button 正常顯示,然後最後一個 Button 佔滿所有剩餘的空間。
layout-weight - 佔用空間的比例
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="新遊戲"/> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="設定"/> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="離開"/> </LinearLayout>0 表示使用原尺寸(layout_weight 的預設值),如果三個 Button 都用 1 的話,則三個 Button 會三等分整個螢幕,如果分別是 2、1、1 的話,則三個 Button 會佔滿整個螢幕,但是第一個 Button 的高度兩倍於其他兩個 Button。
gravity - 文字對齊方式,top / bottom / left / right / center / center_vertical / center_horizontal / fill_vertical / fill_horizontal / clip_vertical / clip_horizontal
layout_gravity - 元件對齊方式,top / bottom / left / right / center / center_vertical / center_horizontal / fill_vertical / fill_horizontal / clip_vertical / clip_horizontal
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="top" android:layout_gravity="left" android:text="新遊戲"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:layout_gravity="center" android:text="設定"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="bottom" android:layout_gravity="right" android:text="離開"/> </LinearLayout>若要使用 layout_gravity,該元件的 layout_width / layout_height 必須是 wrap_content 才有用。
沒有留言:
張貼留言