android 佈局種類
- LinearLayout線性佈局
- RelativeLayout相對佈局
- FrameLayout幀佈局(我也把它叫做覆蓋佈局)
- AbsoluteLayout絕對佈局(已過時,建議不要採用)
- TableLayout表格佈局(極少使用)
LinearLayout線性佈局
LinearLayout線性佈局,它包含的子控件將以橫向或縱向的方式排列
自己重要屬性:
android:orientation="vertical"
(縱向)
android:orientation="horizontal"
(橫向)
android:gravity="center"
(決定他子控件的x、y座標的位置。或left 或right等)
- center_vertical :垂直(Y軸)居中
- center_horizontal:水平(x軸)居中
- center:同時垂直水平居中
- right:子控件位於當前佈局的右邊
- left:子控件位於當前佈局的左邊
- top:子控件位於當前控件的上面
- bottom:子控件位於當前控件的下面
- 這些grvity的值可以組合使用如:android:gravity="right|top"
子類控件重要屬性:
android:layout_gravity="right"(子控件本身在LinearLayout的X、y軸位置)
android:layout_weight="1"
(子控件佔父容器的比例)
RelativeLayout相對佈局
RelativeLayout相對佈局,它包含的子控件將一控件之間的相對位置或子空間相對父容器的位置的方式排列
子類控件在RelativeLayout中常用到的屬性(相對應容器)
android:layout_alignParentBottom="true"子控件相對於父容器靠下面
android:layout_alignParentLeft="true"子控件相對於父容器靠左邊
android:layout_marginRight="20dp"子控件距離父容器右邊的距離(還有左邊距離、下面距離等)
android:layout_centerInParent="true"子控件相對於父容器將同時橫向居中和垂直居中(還有橫向居中、垂直居中)
RelativeLayout中子類控件相對於其他子類控件的一個位置
- android:layout_above="@id/btn1" 該控件位於指定控件(@id/btn1)的上面
- android:layout_below="@id/btn1"該控件位於指定控件(@id/btn1)的下面
- android:layout_toRightOf="@id/btn1"該控件位於指定控件(@id/btn1)的右邊
- android:layout_toLeftOf="@id/btn1"該控件位於指定控件(@id/btn1)的左邊
- android:layout_alignBottom="@id/btn1"該控件的底部邊緣與給定控件的底部邊緣對齊(還有其他上面對齊、左邊對齊、右邊對齊等)
應用場景
FrameLayout幀佈局(我也把它叫做覆蓋佈局)
這種佈局中所有的子控件都不能制定放置的位置,它們都是放在這個佈局的左上角,並且後面的添加的子控件覆蓋在前面的子控件上面,並將前面的控件部分或全部覆蓋。
應用場景效果:
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main2"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="czg.com.myapplication.Main2Activity">
<TextView
android:background="#dad0c5"
android:text="第一個放置的控件"
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_gravity="center"
android:id="@+id/tv1"
/>
<TextView
android:background="#cc8888"
android:text="第2個放置的控件"
android:layout_width="250dp"
android:layout_height="250dp"
android:layout_gravity="center"
android:id="@+id/tv2"
/>
<TextView
android:background="#99223e99"
android:text="第3個放置的控件"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_gravity="center"
android:id="@+id/tv3"
/>
</FrameLayout>
AbsoluteLayout絕對佈局(已過時,建議不要採用)
絕對佈局(座標佈局),用於直接指定子控件的x、y軸的絕對座標,對適配android多機型多種分辨率來說適應性太差,一般不建議使用。
特殊屬性:
android:layout_x="69dp"
android:layout_y="83dp"
如:
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="69dp"
android:layout_y="83dp"
android:id="@+id/button3"
/>
TableLayout表格佈局(極少使用,一般與TableRow配合使用)
特殊屬性:
android:collapseColumns="1,2"
摺疊(隱藏)索引列,隱藏列必須用逗號隔開:如1,2
android:shrinkColumns="1,2"
收縮索引列(類似execl中的自動換行),當可收縮的列內容太多,採用自動換行不會被擠出屏幕。列之間必須用逗號隔開:如2,4,你可以通過"*"號代替收縮所有列。
android:stretchColumns="2"
用指定的列,以填滿剩餘的空白空間(主要用於放置的這行空間控件太少,沒法鋪滿整行時,造成的不美觀,類似與前面介紹過的比重屬性weight),列之間必須用逗號隔開:如2,4,你可以通過"*"號代替收縮所有列。
表格佈局內部控件的特殊屬性
android:layout_column="1"
該控件顯示在第2列
android:layout_span="2"
該控件佔據2列
推薦一篇: