android:layout_gravity和android:gravity屬性的區別


一、介紹:

   gravity的中文意思就是”重心“,就是表示view橫向和縱向的停靠位置

  (1).android:gravity:是對view控件本身來說的,是用來設置view本身的內容應該顯示在view的什么位置,默認值是左側。也可以用來設置布局中的控件位置

  (2).android:layout_gravity:是相對於包含改元素的父元素來說的,設置該元素在父元素的什么位置;

  比如TextView: android:layout_gravity表示TextView在界面上的位置,android:gravity表示TextView文本在TextView的什么位置,默認值是左側.

二、使用過程中失效

  • android:gravity : 表示當前View,即控件,內部的東西的,對齊方式
    • 常見的是:
      • TableRow中的Button
      • EditText(內部)的文字
      • Button(內部)的文字
  • android:layout_gravity: 表示當前View,即控件本身在父一級內的(即父一級控件所給當前子控件所分配的顯示范圍內)的對齊方式
    • 常見的是:
      • 當前EditText(在父一級LineLayout所分配給其的顯示范圍內)的對齊方式
      • 當前的Button(在父一級TableRow所分配給其的顯示范圍內)的對齊方式 ->此處需要注意的是,很多時候,改變Button內的layout_gravity,常看不到改動的效果,是因為其顯示范圍和位置,已經由父一級的TableRow的gravity決定了。
      • 下面的代碼是設置button的顯示效果
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical" >
 6 
 7     <Button
 8         android:layout_width="250dp"
 9         android:layout_height="wrap_content"
10         android:layout_gravity="right"
11         android:gravity="right"
12         android:text="文字的gravity屬性" />
13 
14 </LinearLayout>

結果如下:

可以看得出來button的位置由於layout_gravity的right屬性位於view的右側,而該button的內容也由於gravity的設置位於了右側。

但是當修改了外層的linearlayout的orientation屬性時:就會發生變化

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="horizontal" >
 6 
 7     <Button
 8         android:layout_width="250dp"
 9         android:layout_height="wrap_content"
10         android:layout_gravity="right"
11         android:gravity="right"
12         android:text="文字的gravity屬性" />
13 
14 </LinearLayout>

可以看得出來此處android:layout_gravity="right"屬性設置無效。

通過驗證得出來:

        (1) 當我們的LinearLayout的orientation的屬性值是horizontal也就是水平方向時:--->我們可以設置控件的layout_gravity屬性值為:豎直方向的變化比如bottom,top,center_vertical。

        (2) 當我們的LinearLayout的orientation的屬性值是vertical也就是豎直方向是:--->我們可以設置控件的layout_gravity屬性值為:水平方向的變化比如right,left,center_horizontal。

        (3)這個結論表明,layout_gravity屬性時子控件相對於父布局的相對位置,一旦父布局寫死了方向水平或者垂直,在該方向上就只能是默認變化,子控件無法干預,但是在與之相對的方向上子控件可以自由變幻,想想也是可以理解的,老子的方向訂好了,你只能是往前一點或者往后一點,想直接達到終點這不行,但是允許你出去找小朋友玩耍~~~

        (4)有一個比較特殊的是center,不管是橫向還是縱向的時候,它總有一個方向起作用

 

  • android:gravity : 表示當前View,即控件,內部的東西的,對齊方式
    • 常見的是:
      • TableRow中的Button
      • EditText(內部)的文字
      • Button(內部)的文字
  • android:layout_gravity: 表示當前View,即控件本身在父一級內的(即父一級控件所給當前子控件所分配的顯示范圍內)的對齊方式
    • 常見的是:
      • 當前EditText(在父一級LineLayout所分配給其的顯示范圍內)的對齊方式
      • 當前的Button(在父一級TableRow所分配給其的顯示范圍內)的對齊方式 ->此處需要注意的是,很多時候,改變Button內的layout_gravity,常看不到改動的效果,是因為其顯示范圍和位置,已經由父一級的TableRow的gravity決定了。


免責聲明!

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



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