iT邦幫忙

2024 iThome 鐵人賽

DAY 26
0

Linearlayout線性佈局,其實大家都不陌生尤其在前面有些篇章又使用到它,它有水平(horizontal)及垂直(vertical)兩種方式,預設為水平。

這樣只有文字太枯燥,我們還是之接上手比較快~


Linearlayout線性佈局

我這是是拿之前 轉換Activity - Intent Day11 裡面的小範例去更改,想跟著做的可以去那天複製程式碼。

常用的屬性

程式碼 功能
android:id 設給元件(組件)id
android:layout_width 佈局的寬
android:layout_height 佈局的高
android:orientation 更改佈局方式, 水平(horizontal)或垂直(vertical)
android:gravity 控制組件裡面的元素對齊方式
android:layout_gravity 單純控制組件父容器(外面那層)的對齊方式

權重

android:layout_weight => 以比例方式去分劃佈局區域。
在水平Linearlayout下須將寬改為0,垂直Linearlayout下須將高改為0,才能依照正確比例去分配。

更改MainActivity

  • 第一步更改反白部分為Linearlayout
    https://ithelp.ithome.com.tw/upload/images/20241004/20168454vMR4JHGOe3.png

  • 更改完後將所有Guideline刪除,並利用權重去分配比例(我盡量改成跟之前有Guideline分配一樣)
    https://ithelp.ithome.com.tw/upload/images/20241004/20168454lAdP3shNZ0.png

TextView我將它視為空白,所以不會有id等。

(完整程式碼)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/main_theme_tv"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.2"
        android:gravity="center"
        android:text="今日運氣"
        android:textSize="30dp"
        android:textStyle="bold"
        android:textColor="#8F56E4"
        android:background="#E0CCF5" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:orientation="horizontal"
        android:layout_weight="1">

        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.2"/>

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

            <TextView
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="0.1"/>

            <EditText
                android:id="@+id/main_name_et"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="0.1"
                android:ems="10"
                android:hint="Name"
                android:inputType="text" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="0.1"/>

            <Button
                android:id="@+id/main_touch_btn"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="0.1"
                android:background="@drawable/my_button"
                android:text="抽取運氣"
                android:textSize="28dp"
                app:backgroundTint="@null" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="0.2"/>

        </LinearLayout>

        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.2"/>

    </LinearLayout>

</LinearLayout>

更改SettingActivity

  • 一樣步驟改為Linearlayout、將所有Guideline刪除,使用權重去分配比例。
    https://ithelp.ithome.com.tw/upload/images/20241004/20168454s6i8VjkcdA.png

  • 更改完(盡量改成差不多的樣子)
    https://ithelp.ithome.com.tw/upload/images/20241004/201684549AejdITEhY.png

(完整程式碼)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".SettingActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.01"/>

    <ImageView
        android:id="@+id/setting_img_img"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.1"
        app:srcCompat="@drawable/img_" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.01"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:orientation="horizontal"
        android:layout_weight="0.05">

        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.02"/>

        <TextView
            android:id="@+id/setting_result_tv"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.1"
            android:text="TextView"
            android:textSize="30dp"
            android:textStyle="bold"
            android:gravity="center" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.02"/>

    </LinearLayout>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.01"/>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:orientation="horizontal"
    android:layout_weight="0.03">

    <TextView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.01"/>

    <Button
        android:id="@+id/setting_back_btn"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.1"
        android:text="返回"
        android:textSize="28dp"
        android:background="@drawable/my_button"
        app:backgroundTint="@null" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.01"/>

</LinearLayout>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.05"/>

</LinearLayout>

這樣就成功將之前 轉換Activity - Intent Day11 的範例更改成LinearLayout佈局,如果有時間可以拿之前的範例更改,多做多熟悉~


上一篇
元件篇-自定義TabLayout Day25
下一篇
SharedPreference Day27
系列文
Android 元件總動員 - 運用與實踐元件指南30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言