Android gravity和layout_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>

【效果】

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM