Android中的gravity和layout_gravity有什麼區別?

我知道咱們能夠爲android:gravityandroid:layout_gravity屬性設置如下值: android

  1. center
  2. center_vertical
  3. center_horizontal

可是我對這二者感到困惑。 編程

android:gravityandroid:layout_gravity的用法有什麼區別? 佈局


#1樓

若是要在視圖中設置內容的重力,則將使用「 android:gravity」;若是要在其父視圖中設置該視圖(總體)的重力,則將使用「 android: layout_gravity」。 spa


#2樓

我在Sandip的博客上看到的我幾乎錯過的東西解決了個人問題。 他說layout_gravityLinearLayoutlayout_gravitycode

若是您使用的是LinearLayout ,而重力設置LinearLayout您不知所措(例如我),請切換到其餘選項。 xml

我實際上切換到了RelativeLayout而後在包含的2個TextView上使用layout_alignParentLeftlayout_alignParentRight ,使它們在一行上向左和向右移動。 圖片


#3樓

內部-外部 ip

  • gravity將內容排列在視圖內部
  • lay out _gravity自編視圖的位置自己以外

有時也有助於查看圖片。 綠色和藍色是TextViews ,其餘兩種背景顏色是LinearLayoutsutf-8

在此處輸入圖片說明

筆記

  • layout_gravity不適用於RelativeLayout視圖。 將其用於LinearLayoutFrameLayout視圖。 請參閱個人補充答案以獲取更多詳細信息。
  • 視圖的寬度(或高度)必須大於其內容。 不然gravity將不會有任何影響。 所以, wrap_contentgravity沒有意義。
  • 視圖的寬度(或高度)必須小於父視圖。 不然, layout_gravity將不起做用。 所以, match_parentlayout_gravity在一塊兒毫無心義。
  • layout_gravity=center在這裏看起來與layout_gravity=center_horizontal相同,由於它們處於垂直線性佈局中。 在這種狀況下,您不能垂直居中,所以layout_gravity=center僅水平居中。
  • 該答案僅涉及在佈局內的視圖上設置gravitylayout_gravity 。 若要查看在設置父佈局自己的gravity時會發生什麼,請查看我上面提到的補充答案 。 (摘要: gravityRelativeLayout上不能很好地工做,但在LinearLayout可能頗有用。)

所以請記住, layout _gravity在其layout中安排一個視圖。 重力將內容安排在視圖內部。 get

XML文件

這是上面圖像的xml供您參考:

<?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" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#e3e2ad"
        android:orientation="vertical" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:textSize="24sp"
            android:text="gravity=" />

        <TextView
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:background="#bcf5b1"
            android:gravity="left"
            android:text="left" />

        <TextView
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:background="#aacaff"
            android:gravity="center_horizontal"
            android:text="center_horizontal" />

        <TextView
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:background="#bcf5b1"
            android:gravity="right"
            android:text="right" />

        <TextView
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:background="#aacaff"
            android:gravity="center"
            android:text="center" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#d6c6cd"
        android:orientation="vertical" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:textSize="24sp"
            android:text="layout_gravity=" />

        <TextView
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:layout_gravity="left"
            android:background="#bcf5b1"
            android:text="left" />

        <TextView
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:layout_gravity="center_horizontal"
            android:background="#aacaff"
            android:text="center_horizontal" />

        <TextView
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:layout_gravity="right"
            android:background="#bcf5b1"
            android:text="right" />

        <TextView
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:layout_gravity="center"
            android:background="#aacaff"
            android:text="center" />

    </LinearLayout>

</LinearLayout>

有關


#4樓

看一下圖像以瞭解重力


#5樓

只是想我會在這裏添加本身的解釋-來自iOS的背景,這就是我如何在iOS術語中內部化這兩個:「佈局重力」會影響您在超級視圖中的位置。 「重力」會影響子視圖在您內部的位置。 換句話說,「佈局重力」使您本身定位,而重力使孩子定位。

相關文章
相關標籤/搜索