一、gravity和layout_gravity相同處 兩者都是設置對齊方式的屬性。內部的屬性值相同。 根據英文意思也能理解其中的意思。如center_horizontal表示在水平方向上的位置為中間。 二、gravity和layout_gravity的不同處 gravity是設置自身內部元素的對齊 ...
一、gravity和layout_gravity相同處
兩者都是設置對齊方式的屬性。內部的屬性值相同。
根據英文意思也能理解其中的意思。如center_horizontal表示在水平方向上的位置為中間。
二、gravity和layout_gravity的不同處
gravity是設置自身內部元素的對齊方式。比如一個TextView,則是設置內部文字的對齊方式。如果是ViewGroup組件如LinearLayout的話,則為設置它內部view組件的對齊方式。
layout_gravity是設置自身相當於父容器的對齊方式。比如,一個TextView設置layout_gravity屬性,則表示這TextView相對於父容器的對齊方式。
具體參考如下
1、gravity效果
①TextView
【代碼】
1 <TextView 2 android:text="這是一個TextView" 3 android:layout_width="200dp" 4 android:layout_height="200dp" 5 android:gravity="center" 6 android:background="#ff0" 7 />
【提示】這裡方便觀察,我們給TextView設置了一個backGround背景顏色。設置了固定的寬度
【註意】如果要用gravity屬性,此組件的layout_width和layout_height不能設置為wrap_content。此時設置的gravity屬性沒有效果,因為組件包裹著內容,無論設置什麼,也都不能有改變
【效果】
②LinearLayout
【代碼】
1 <LinearLayout 2 android:layout_width="match_parent" 3 android:layout_height="match_parent" 4 android:gravity="center" 5 android:background="#f00" 6 > 7 <TextView 8 android:text="TextView在這裡" 9 android:layout_width="200dp" 10 android:layout_height="200dp" 11 android:background="#ff0" 12 /> 13 </LinearLayout>
【提示】此時外部viewGroup類組件設置gravity為center,內部組件TextView在外部LinearLayout的中間。TextView沒有設置gravity屬性,則文字在開始位置
【效果】
2、layout_gravity效果
對於layout_gravity不是什麼情況下都能設置的屬性(如RelativeLayout),而且在不同的viewGroup中產生的效果也會不同(如LinearLayout)。
具體實例如下
①LinearLayout
1 <LinearLayout 2 android:layout_width="match_parent" 3 android:layout_height="match_parent" 4 android:background="#f00" 5 android:orientation="horizontal"> 6 <TextView 7 android:text="TextView在這裡" 8 android:layout_width="200dp" 9 android:layout_height="200dp" 10 android:background="#ff0" 11 android:layout_gravity="center" 12 /> 13 </LinearLayout>
【效果】
【提示】此時layout_gravity的center值,並沒有讓TextVieW在LinearLayout的中間,這和LinearLayout的orientation的定位方向有關。
當設置為horizontal時,LinearLayout中的組件時按照橫著排列,當設置ayout_gravity屬性為center值時,組件就在垂直方向處於中間位置。同理,當設置為vertical時,效果如下
②FrameLayout(幀佈局)
【代碼】
1 <FrameLayout 2 android:layout_width="match_parent" 3 android:layout_height="match_parent" 4 android:background="#f00"> 5 <TextView 6 android:text="TextView在這裡" 7 android:layout_width="200dp" 8 android:layout_height="200dp" 9 android:background="#ff0" 10 android:layout_gravity="center" 11 /> 12 </FrameLayout>
【效果】