相對佈局和線性佈局是用的最多的了,其中有一些屬性是共有的,有的是各自獨有的,有點繞,特此記錄下
通用(但是在實際的場景中效果可能有區別)
id height width 這些肯定是都有的
layout_marginLeft 子控件相對於父控件的左邊距,還有上下右 ,具體的數值 ,比如一個button相對於父控件的距離
paddingLeft 控件內文字距離控件左邊距, 具體的數值
gravity 控件內的文本相對於這個控件的位置
LinearLayout特有的
orientation:horizontal和vertical 相對佈局無需設置佈局方向,控件之間都是通過相對位置來排布的
layout_gravity 控件的左右上下居中位置 這個屬性必須顯示定義父控件的orientation之後才生效,所以只有線性佈局中起作用
layout_weight 權重 後面詳述
RelativeLayout 特有的(每一種只列出一個方向)
layout_alignParentRight true/false 如果該值爲true,則將該控件的右邊與父控件的右邊對齊,默認置於父窗口最右上,會覆蓋最右上的控件
layout_alignRight @id/.... 將該控件的右邊緣與給定ID控件的右邊緣對齊,並置於父窗口最上邊,會覆蓋最上邊的控件
layout_centerHorizontal true/false
layout_centerVertical
layout_centerInParent
layout_above @id/ 將該控件的底部至於給定ID的控件之上,但不會左對齊,默認置於父窗口最左邊,會覆蓋最左邊的控件
類似的還有below
layout_toLeftOf @id/.... 將該控件的右邊緣和給定ID的控件的左邊緣對齊,默認置於父窗口最上面,會覆蓋最上面的控件
關於權重
權重最基本的用法就是 對線性佈局指定方向(水平或垂直)上剩餘空間分配的一個規則,先把規定的大小佔完,再來按比例分配剩餘空間
特殊情況:
首先計算數值,所有控件加起來後可能超過屏幕大小了,這個時候剩餘值就應該是負的,此時按權重分配,權重大的分得值比較大,但是負的,這個時候加上原來的值,反而變小
權重有一個很有用的特點,在一些特殊應用場景,比如有兩個控件,一個設置了權重,一個不設置權重,那麼這個設置權重的控件會後加載渲染。
比如,vertical
我們想給下面的控件設置一個高度,上面的充滿剩餘空間
那麼下面的控件不設置權重,先從底部佔一定高度,上面的控件給一個比較大的權重,就能填滿剩餘的空間。否則,是從上往下加載。
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_weight="1"
android:hint="@string/hello_world"/>
<EditText
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:gravity="right"
android:hint="@string/fruits"/>
這樣子第一個EditText後加載,佔滿剩餘屏幕