http://blog.csdn.net/shakespeare001/article/details/7843460
1.首先來看看android:layout_gravity和android:gravity的使用區(qū)別像棘。
android:gravity:
這個(gè)是針對(duì)控件里的元素來說的逞带,用來控制元素在該控件里的顯示位置蛾方。例如,在一個(gè)Button按鈕控件中設(shè)置如下兩個(gè)屬性乎澄,
android:gravity="left"和android:text="提交"友存,這時(shí)Button上的文字“提交”將會(huì)位于Button的左部。
android:layout_gravity:
這個(gè)是針對(duì)控件本身而言甲捏,用來控制該控件在包含該控件的父控件中的位置充甚。同樣以政,當(dāng)我們?cè)贐utton按鈕控件中設(shè)置android:layout_gravity="left"屬性時(shí)霸褒,表示該Button按鈕將位于界面的左部伴找。
2.屬性值:
這兩個(gè)屬性可選的值有:top、bottom废菱、left技矮、right抖誉、center_vertical、fill_vertical衰倦、center_horizontal袒炉、fill_horizontal、center樊零、fill我磁、clip_vertical。
一個(gè)屬性可以包含多個(gè)值驻襟,需用“|”分開夺艰。其含義如下:
top將對(duì)象放在其容器的頂部,不改變其大小.
bottom將對(duì)象放在其容器的底部沉衣,不改變其大小.
left將對(duì)象放在其容器的左側(cè)郁副,不改變其大小.
right將對(duì)象放在其容器的右側(cè),不改變其大小.
center_vertical將對(duì)象縱向居中豌习,不改變其大小.
垂直對(duì)齊方式:垂直方向上居中對(duì)齊存谎。
fill_vertical必要的時(shí)候增加對(duì)象的縱向大小,以完全充滿其容器.
垂直方向填充
center_horizontal將對(duì)象橫向居中肥隆,不改變其大小.
水平對(duì)齊方式:水平方向上居中對(duì)齊
fill_horizontal必要的時(shí)候增加對(duì)象的橫向大小既荚,以完全充滿其容器.
水平方向填充
center將對(duì)象橫縱居中,不改變其大小.
fill必要的時(shí)候增加對(duì)象的橫縱向大小栋艳,以完全充滿其容器.
clip_vertical附加選項(xiàng)固以,用于按照容器的邊來剪切對(duì)象的頂部和/或底部的內(nèi)容. 剪切基于其縱向?qū)R設(shè)置:頂部對(duì)齊時(shí),剪切底部嘱巾;底部對(duì)齊時(shí)剪切頂部憨琳;除此之外剪切頂部和底部.
垂直方向裁剪
clip_horizontal附加選項(xiàng),用于按照容器的邊來剪切對(duì)象的左側(cè)和/或右側(cè)的內(nèi)容. 剪切基于其橫向?qū)R設(shè)置:左側(cè)對(duì)齊時(shí)旬昭,剪切右側(cè)篙螟;右側(cè)對(duì)齊時(shí)剪切左側(cè);除此之外剪切左側(cè)和右側(cè).
水平方向裁剪
我們主要來看看center_vertical和center_horizontal兩個(gè)屬性值问拘,center_vertical是指將對(duì)象在垂直方向上居中對(duì)齊遍略,即在從上到下的方向上選擇中間的位置放好;center_horizontal是指將對(duì)象水平方向上居中對(duì)齊骤坐,即在從左到右的方向上選擇中間的位置放好绪杏。
3.特殊情況
當(dāng)我們采用LinearLayout布局時(shí),有以下特殊情況需要我們注意:
(1)當(dāng) android:orientation="vertical"? 時(shí)纽绍,android:layout_gravity只有水平方向的設(shè)置才起作用蕾久,垂直方向的設(shè)置不起作用。即:left拌夏,right僧著,center_horizontal 是生效的履因。
(2)當(dāng) android:orientation="horizontal" 時(shí),android:layout_gravity只有垂直方向的設(shè)置才起作用盹愚,水平方向的設(shè)置不起作用栅迄。即:top,bottom皆怕,center_vertical 是生效的毅舆。
下面以一個(gè)例子說明:(本例來源于:http://blog.csdn.net/dekunchenivan/article/details/6718678)
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
android:layout_width="100dip"
android:layout_height="100dip"
android:layout_gravity="bottom|center_horizontal"
android:gravity="center|bottom"
android:background="#00FF00"
android:text="@string/textview"
/>
android:layout_width="100dip"
android:layout_height="100dip"
android:layout_gravity="bottom|left"
android:gravity="left|top"
android:background="#FF0000"
android:text="@string/button"
/>
其效果如圖:
在TextView中,我們?cè)O(shè)置了android:layout_gravity="bottom|center_horizontal"愈腾,但該TextView并沒有顯示在屏幕的下方正中央朗兵,表明只有center_horizontal屬性起了作用,這正是因?yàn)槲覀兪褂昧薒inearLayout布局顶滩,并且其android:orientation="vertical"余掖,只有水平方向的設(shè)置才會(huì)起作用,其他方向則會(huì)失效礁鲁。同樣盐欺,Button也一樣。