Android中gravity與layout_gravity使用實例

網上關於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>

暫時只瞭解了這些,有新的佈局瞭解,會繼續完善該文章。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章