天天看點

Android學習之簡單了解布局的layout_gravity和gravity屬性

如果在FrameLayout、TableLayout、LinearLayout、RelativeLayout或GridLayout設定gravity

屬性為center,相當于告訴該布局容器下的所有控件按center(居中)排序。

布局檔案:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    android:gravity="center"
    >

    <TextView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#FF0000"
        android:layout_marginBottom="16dp"
        />

    <TextView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#00FF00"
        android:layout_gravity="center"
        />

</LinearLayout>
           

如下圖:

Android學習之簡單了解布局的layout_gravity和gravity屬性

而如果紅色的控件的layout_gravity 屬性設為left,則告訴父布局,我要向左排序,此時TextView控件便不會聽從父布局的gravity排序的指令了,會按照自身的layout_gravity屬

性的值來排序。

此時如下圖:

Android學習之簡單了解布局的layout_gravity和gravity屬性

同理,如果父布局設定layout_gravity的屬性值為center,其子控件并不會居中排序,因為這個屬性隻是告訴父布局,我要居中排序了,但父布局之上沒有布局了,是以這個屬

性就無效了,當然如果父布局之上還有布局,則會生效。

同理子控件的gravity屬性是相對其子控件才會生效。

本人拙見:

layout_gravity 屬性是相對于父布局而言的,而gravity屬性是相對于子控件而言的。

如果有特殊情況,請指出,謝謝。

繼續閱讀