Android中gravity与layout_gravity使用实例

来源:互联网 发布:labview软件需求说明书 编辑:程序博客网 时间:2024/05/04 14:08

网上关于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>

暂时只了解了这些,有新的布局了解,会继续完善该文章。


0 0