網上關於gravity與layout_gravity的分析很多,這裏不過多描述,有意者可參考 http://blog.csdn.net/feng88724/article/details/6333809
在實際使用中發現,雖然我們知道gravity與layout_gravity的用法,但我們不能很好的設置好他,尤其是佈局中包含多個子控件的時候。這裏做幾點總結:
一、父控件佈局設置android:layout_width和android:layout_height爲match_parent;
二、父控件佈局設置android:gravity來控制子控件的位置;之所以不通過子控件設置android:layout_gravity控制,是因爲某些情況下這種設置不起作用,比如父控件爲linearlayout並且設置成android:orientation="horizontal" 時;
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bg_list_item"
android:orientation="horizontal" >
<TextView
android:id="@+id/item_monitorName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="nihao"
android:layout_gravity="right"
android:textSize="20sp" />
<CheckBox
android:id="@+id/item_cb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="20dp"
android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false"
android:layout_gravity="right"/>
</LinearLayout>
三、若需要在父控件內設置兩個子控件分別居左和居右,需要在子控件中設置android:layout_weight="1"來協助;
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:background="@drawable/bg_list_item"
android:minHeight="30dp"
android:orientation="horizontal" >
<TextView
android:id="@+id/item_monitorName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="10dp"
android:layout_weight="1"
android:gravity="left"
android:text="向左"
android:textSize="20sp" />
<TextView
android:id="@+id/item_monitorName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:gravity="right"
android:text="向右"
android:textSize="20sp" />
</LinearLayout>
四、CheckBox無法直接通過android:gravity="right"將選擇框設置居右,原因不明,還請了解者告知,謝謝。但可通過父控件設置android:gravity="right"實現;
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:background="@drawable/bg_list_item"
android:minHeight="30dp"
android:orientation="horizontal" >
<TextView
android:id="@+id/item_monitorName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="10dp"
android:layout_weight="1"
android:textSize="20sp"
android:text="向左"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
android:layout_weight="1" >
<CheckBox
android:id="@+id/item_cb"
android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="20dp"
android:text="向右"/>
</LinearLayout>
</LinearLayout>
暫時只瞭解了這些,有新的佈局瞭解,會繼續完善該文章。