還記得我們說過 RelativeLayout 是依照彼此的相對位子來對齊

我們先講一下元件對齊的屬性要怎麼打

android:layout_alignParentLeft="true" // 貼齊 parent 的左邊
android:layout_alignParentRight="true" // 貼齊 parent 的右邊
android:layout_alignParentTop="true" // 貼齊 parent 的上面
android:layout_alignParentBottom="true" // 貼齊 parent 的下面
android:layout_centerInParent="true" // 放在 parent 正中心

android:layout_toLeftOf="B" // 自己 去 B 的左邊
android:layout_toRightOf="B" // 自己 去 B 的右邊
android:layout_above="B" // 自己 去 B 的上面
android:layout_below="B" // 自己 去 B 的下面

android:layout_alignLeft="B" // 自己的左邊 貼齊 B 的左邊
android:layout_alignRight="B" // 自己的右邊 貼齊 B 的右邊
android:layout_alignTop="B" // 自己的上面 貼齊 B 的上面
android:layout_alignBottom="B" // 自己的下面 貼齊 B 的下面

第一步:清空程式碼,留下 RelativeLayout

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

加上五個 Button

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <Button
        android:id="@+id/Button_one"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="one" />
    <Button
        android:id="@+id/Button_two"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="two" />
    <Button
        android:id="@+id/Button_three"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="three" />
    <Button
        android:id="@+id/Button_four"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="four" />
    <Button
        android:id="@+id/Button_five"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="five" />
</RelativeLayout>

利用上面教的語法對齊看看

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <Button
        android:id="@+id/Button_one"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true" // 對齊 parent 左邊
        android:layout_alignParentTop="true"  // 對齊 parent 上面
        android:text="one" />
    <Button
        android:id="@+id/Button_two"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"  // 對齊 parent 上面
        android:layout_toRightOf="@id/Button_one" // 放在 one 的右邊
        android:text="two" />
    <Button
        android:id="@+id/Button_three"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"    // 對齊 parent 左邊
        android:layout_alignParentBottom="true"  // 對齊 parent 下面
        android:text="three" />
    <Button
        android:id="@+id/Button_four"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"   // 對齊 parent 右邊
        android:layout_alignParentBottom="true"  // 對齊 parent 下面
        android:text="four" />
    <Button
        android:id="@+id/Button_five"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"  // 放在 parent 正中心
        android:text="five" />
</RelativeLayout>

出個畫面讓大家練習看看

若有任何問題,都歡迎留言詢問哦!!

ConstraintLayout 用程式碼對齊~~

第一步:一樣清空程式碼,只留下 ConstraintLayout

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
</androidx.constraintlayout.widget.ConstraintLayout>

第二步:讓我們加上隱形的線 ( Guideline )

方法一 : 從這裡選擇 水平 或 垂直的 線( Guildline )

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto" // 加上這行
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline_50" // id 設為 guildline_50 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"  // 設定水平 或 垂直 的線
        app:layout_constraintGuide_percent="0.5"/> // 螢幕比例  
</androidx.constraintlayout.widget.ConstraintLayout>

設定一條【水平線】比例為【50%】

接著我們創一個 Button 並讓他對齊這條線的上方

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline_50"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.5"/>
    <Button
        android:id="@+id/button_one"  // id 設為 button_one
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="one"
        // 元件左側對齊 parent 左側
        app:layout_constraintLeft_toLeftOf="parent"  
        // 元件右側對齊 parent 右側
        app:layout_constraintRight_toRightOf="parent" 
        // 元件底部對齊線的上方
        app:layout_constraintBottom_toTopOf="@id/guideline_50"/> 
</androidx.constraintlayout.widget.ConstraintLayout>