天天看點

android:gravity和android:layout_gravity的差別

1.android:gravity有兩個作用。

一個是設定控件中的文本内容的位置。如下所示,文本中的你好内容居中顯示:

      <TextView

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="你好"

        android:textSize="20sp"

        android:gravity="center_hrizontal" 

        />

效果圖

android:gravity和android:layout_gravity的差別

另一個是是對單個View進行位置設定相對于父控件。如下所示

<?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:focusable="true"

    android:focusableInTouchMode="true"

    android:orientation="vertical" >

    <EditText

        android:layout_width="match_parent"

        android:layout_height="wrap_content" />

    <TextView

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="你好"

        android:textSize="20sp"

        android:gravity="center_horizontal" 

        />

    <LinearLayout

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:orientation="vertical"

        android:gravity="right"    //設定下面的兩個Button右對齊

        >

        <Button

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="确定" />

        <Button

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="取消" />

    </LinearLayout>

</LinearLayout>

效果圖

android:gravity和android:layout_gravity的差別

2.android:layout_gravity的作用是設定子控件相對于父控件的位置,可以設定多個子控件,比如讓上面的例子中的兩個Button按鈕一左一右,就要用android:layout_gravity。

<?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:focusable="true"

    android:focusableInTouchMode="true"

    android:orientation="vertical" >

    <EditText

        android:layout_width="match_parent"

        android:layout_height="wrap_content" />

    <TextView

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="你好"

        android:textSize="20sp"

        android:gravity="center_horizontal" 

        />

    <LinearLayout

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:orientation="vertical"

        >

        <Button

            android:layout_gravity="left"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="确定" />

        <Button

            android:layout_gravity="right"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="取消" />

    </LinearLayout>

</LinearLayout>

效果圖

android:gravity和android:layout_gravity的差別

3.特殊情況

當我們采用LinearLayout布局時,有以下特殊情況需要我們注意:

(1)當 android:orientation="vertical"  時, android:layout_gravity隻有水準方向的設定才起作用,垂直方向的設定不起作用。即:left,right,center_horizontal 是生效的。

(2)當 android:orientation="horizontal" 時, android:layout_gravity隻有垂直方向的設定才起作用,水準方向的設定不起作用。即:top,bottom,center_vertical 是生效的。