layout_gravity:指的是自己對於自己爸爸容器中的位置;
gravity:指的是設置自己兒子的位置;
因爲RelativeLayout佈局中默認兒子們都是左上角覆蓋排布,所以其中兒子們的layout_gravity屬性無法使用。但是別灰心!!還有layout_centerVertical,_centerHorizontal,_centerInParent三個屬性來設置自己在爸爸容器中的位置。
在RelativeLayout中,如果光去設置內部空間layout_marginbottom值和layout_marginright值是不會生效的,因爲RelativeLayout默認是左上角排布,只有將其gravity設置爲gravity="bottom",layout_marginbottom纔會生效;將gravity設置爲right,layout_marginright會生效;同時設置的話,兩個屬性值都有用; 或者在子view中設置android:layout_alignParentRight="true" ,這樣就能讓marginright生效
同理LinearLayout也是,只是說對它的佈局而言,默認排布不是左上角,但是錨點是在左上角,所以也是同RelativeLayout一樣,要設置gravity="bottom"right,纔會生效
問題一
xml中需要有一個滿屏的listview,但是也要求有底部導航欄 實現方法
以前的實現方法是,在測試機中先將listview的高度設爲某一特定值,底下剩下的高度可以放下底部導航欄;
這樣的話可能會因爲手機的不同導致ui有差異;
最近看到一個實現方法:
先將listview的weight設置爲1;
那麼留下剩餘的高度就是底部導航欄的高度(底部導航欄一定要設置具體高度數值):
因爲如果LinearLayout中的某一控件A的高的權重設爲1,那麼代表着這個控件在其他控件佔好位置之後,剩下的高就全是控件A佔着
實現的效果:
問題二:
組長給的一個測試:要用線性佈局和相對佈局分別實現下面一行效果,這一行中有三個按鈕,每個相隔10dp。高度不做考慮,即可爲一個具體數值。除了中間按鈕沒有具體寬 爲wrap_content,其他兩個寬都是20dp。
LinearLayout:(注意中間btn將weight設置爲1,即可佔滿剩餘空間)
RelativeLayout:(在中間btn未設置具體數值寬度之前,想佔滿整個剩下的空間,需要在左邊控件的右邊torightof 同時在右邊控件的左邊toleftof,這樣才能拉大中間的btn長度)