如果在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>
如下圖:
而如果紅色的控件的layout_gravity 屬性設為left,則告訴父布局,我要向左排序,此時TextView控件便不會聽從父布局的gravity排序的指令了,會按照自身的layout_gravity屬
性的值來排序。
此時如下圖:
同理,如果父布局設定layout_gravity的屬性值為center,其子控件并不會居中排序,因為這個屬性隻是告訴父布局,我要居中排序了,但父布局之上沒有布局了,是以這個屬
性就無效了,當然如果父布局之上還有布局,則會生效。
同理子控件的gravity屬性是相對其子控件才會生效。
本人拙見:
layout_gravity 屬性是相對于父布局而言的,而gravity屬性是相對于子控件而言的。
如果有特殊情況,請指出,謝謝。