天天看點

android:layout_gravity 和android:gravit的差別?

總是忘,記下來

android:gravity是調整元素本身的内容或元素包含的子元素顯示的位置,預設是顯示在左側

android:layout_gravity是相對與它的父元素說的,說明元素顯示在父元素的什麼位置。

比如說Button: android:layout_gravity 表示按鈕在界面上的位置。 android:gravity表示Button上的字在button上的位置。

這兩個屬性可選的值有:

值說明

top将對象放在其容器的頂部,不改變其大小.

bottom将對象放在其容器的底部,不改變其大小.

left将對象放在其容器的左側,不改變其大小.

right将對象放在其容器的右側,不改變其大小.

center_vertical将對象縱向居中,不改變其大小. 

垂直對齊方式:垂直方向上居中對齊。

fill_vertical必要的時候增加對象的縱向大小,以完全充滿其容器. 

垂直方向填充

center_horizontal将對象橫向居中,不改變其大小. 

水準對齊方式:水準方向上居中對齊

fill_horizontal必要的時候增加對象的橫向大小,以完全充滿其容器. 

水準方向填充

center将對象橫縱居中,不改變其大小.

fill必要的時候增加對象的橫縱向大小,以完全充滿其容器.

clip_vertical附加選項,用于按照容器的邊來剪切對象的頂部和/或底部的内容. 剪切基于其縱向對齊設定:頂部對齊時,剪切底部;底部對齊時剪切頂部;除此之外剪切頂部和底部.

垂直方向裁剪

clip_horizontal附加選項,用于按照容器的邊來剪切對象的左側和/或右側的内容. 剪切基于其橫向對齊設定:左側對齊時,剪切右側;右側對齊時剪切左側;除此之外剪切左側和右側.

水準方向裁剪

對于 LinearLayout

當 android:orientation="vertical"  時, 隻有水準方向的設定才起作用,垂直方向的設定不起作用。即:left,right,center_horizontal 是生效的。

當 android:orientation="horizontal" 時, 隻有垂直方向的設定才起作用,水準方向的設定不起作用。即:top,bottom,center_vertical 是生效的。

對于RelativeLayout

是沒有android:layout_gravity屬性的,如要設定必須使用android:layout_centerInParent或android:layout_centerHorizontal或android:layout_centerVertical

對于AbsoluteLayout

是沒有android:layout_gravity屬性的,隻能設定x、y的位置

對于FrameLayout

設定center_vertical是垂直居中,而center_horizontal是水準居中,而center則是水準和垂直都居中

對于TableLayout

每個元素都是一行,設定android:layout_gravit屬性沒有效果