Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android 布局中 gravity 和 layout_gravity 屬性

android 布局中 gravity 和 layout_gravity 屬性

編輯:關於Android編程

gravity 這個英文單詞是重心的意思,在這裡就表示停靠位置的意思。

android:gravity 和 android:layout_gravity 的區別:

android:gravity 是設置該view裡面的內容相對於該view的位置,例如設置button裡面的text相對於view的靠左,居中等位置。(也可以在Layout布局屬性中添加,設置Layout中組件的位置)。

android:layout_gravity 是用來設置該view相對與父view的位置,例如設置button在layout裡面的相對位置:屏幕居中,水平居中等。

即android:gravity用於設置View中內容相對於View組件的對齊方式,而android:layout_gravity用於設置View組件相對於Container的對齊方式。說的再直白點,就是android:gravity只對該組件內的東西有效,android:layout_gravity只對組件自身有效。

 

android:layout_gravity 只在 LinearLayout 和 FrameLayout 中有效:

1、對於 LinearLayout :

當 android:orientation=vertical (垂直) 時,只有水平方向的設置才起作用,垂直方向的設置不起作用。即:left,right,center_horizontal 是生效的。

當 android:orientation=horizontal (水平) 時,只有垂直方向的設置才起作用,水平方向的設置不起作用。即:top,bottom,center_vertical 是生效的。

2、對於 FrameLayout : 任意android:layout_gravity屬性都有效,可以非常方便實現對組件的布局。 看個例子:
data-cke-saved-src=https://www.android5.online/Android/UploadFiles_5356/201702/2017022316055299.jpg
整個布局使用了LinearLayout,其中在LinearLayout中添加了android:gravity=center_vertical屬性,使得Button位於屏幕的水平中間。 因為LinearLayout的android:orientation=vertical,所以Button只能使用android:layout_gravity的屬性只有三個,即:left,right,center_horizontal,這裡使用了android:layout_gravity=right,使得Button靠右邊。 然後看Button中的text,Button的width我故意加長了,這樣可以清楚看出文字是居於Button的底部和右邊,所以Button中android:gravity=right|bottom, 屬性是可以多選的,用“|”分開。

通過Java代碼來設置組件的位置:

setGravity()對應android:gravity

gravity屬性對應android:layout_gravity

下面代碼實現同上面布局文件實現的效果

Button button = new Button(this);
button.setText(test);
//設置Button中的文字位置,相當於Button布局屬性中的android:gravity=right|bottom
button.setGravity(Gravity.BOTTOM|Gravity.RIGHT);

LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL); //LinearLayout必須設置方向,否則無法看到效果
//故意加長button長度,這裡200的單位是px
LinearLayout.LayoutParams buttonParams = new LinearLayout.LayoutParams(200, LayoutParams.WRAP_CONTENT);  
//相當於Button布局屬性中的android:layout_gravity=right
buttonParams.gravity = Gravity.RIGHT;   
//相當於這兩句   button.setLayoutParams(buttonParams);
//               layout.addView(button);
layout.addView(button, buttonParams);  
//設置Button的位置,相當於LinearLayout布局屬性中的android:gravity=center_vertical
layout.setGravity(Gravity.CENTER_VERTICAL);   
         
setContentView(layout); 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved