1. 程式人生 > >RelativeLayout控制元件居中詳細解析(可能是最完美的方法)

RelativeLayout控制元件居中詳細解析(可能是最完美的方法)

在RelativeLayout中設定控制元件全部居中,需要注意在父佈局的一些細節設定即可,現在給出完美的解決方法,先看例項:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">

    <VideoView
android:id="@+id/video_play" android:layout_width="100dp" android:layout_height="100dp" android:layout_centerInParent="true" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" />
</RelativeLayout>

這裡寫圖片描述

以上程式碼完美的實現了在RelativeLayout中的居中。

下面來看看另一種情況:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center">

    <VideoView
        android:id="@+id/video_play"
        android:layout_width
="100dp" android:layout_height="100dp" android:layout_centerInParent="true" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" />
</RelativeLayout>

對比之前的程式碼,僅修改了父佈局中的width、height,改為wrap_content,gravity還是沒改變。

這裡寫圖片描述

控制元件在RelativeLayout中就不居中了。

由此可見對於父佈局的width、height的設定,對控制元件居中的實現是多麼重要了。但是若專案實現中,非要把父佈局設定成wrap_content,難道就沒有別的方法了嗎?答案當然是,有!

大家肯定留意到了父佈局中的gravity居中的設定,其實這個就是解決居中問題的關鍵點。若你將父佈局width、height設定成wrap_content之後,那麼就不能使用android:gravity=”center”來控制控制元件居中了,而應該改成android:layout_gravity=”center”來使用即可。具體的程式碼為:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center">

    <VideoView
        android:id="@+id/video_play"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_centerInParent="true"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp" />

</RelativeLayout>

這樣就可以完美的解決問題了,在使用的過程要稍微留意一下就可以解決這些佈局的小問題了。

現在和大家分享一下 android:layout_gravity、android:gravity=”center”的區別。
android:gravity 主要是對自身View的位置控制。
android:layout_gravity 主要用於設定View 或者 Layout 在其父元件中的對齊方式。