android 布局中 gravity 和 layout_gravity 屬性

來源:互聯網
上載者:User

標籤:

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屬性都有效,可以非常方便實現對組件的布局。看個例子:

整個布局使用了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", 屬性是可以多選的,用“|”分開。
<span style="font-family:Microsoft YaHei;"><?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:orientation="vertical"    android:gravity="center_vertical">        <Button         android:layout_width="150px"            android:layout_height="wrap_content"           android:text="test"            android:gravity="right|bottom"        android:layout_gravity="right"/></LinearLayout></span>

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

setGravity()對應android:gravity

gravity屬性對應android:layout_gravity

下面代碼實現同上面布局檔案實現的效果

<span style="font-family:Microsoft YaHei;">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的單位是pxLinearLayout.LayoutParams buttonParams = new LinearLayout.LayoutParams(200, LayoutParams.WRAP_CONTENT);  //相當於Button布局屬性中的android:layout_gravity=rightbuttonParams.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);</span>
參考:http://blog.csdn.net/feng88724/article/details/6333809http://www.cnblogs.com/ghj1976/archive/2011/04/26/2029535.html


android 布局中 gravity 和 layout_gravity 屬性

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.