iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 9
0
Software Development

[Andriod] Andriod Studio 從入門到進入狀況系列 第 9

[Day 08] 我的第一個Android程式 - BMI程式設計(三) 將字串抽離Xml介面描述檔

昨天我們將所有的文字內容都寫在activity_main.xml裡面,
但是以Android設計來說,
這不是很好的設計,
通常都會將字串獨立出來,
放在strings.xml裡面,
而且可以透過Android預設的功能,
來實作多國語系,
多國語系的部分就等明後天再說,
今天先實作把字串抽離出來,
以下是寫好的strings.xml的內容

<resources>
    <string name="app_name">MyBMI</string>
    <string name="bmi_hello">哈囉!BMI</string>
    <string name="bmi_height">身高 (cm)</string>
    <string name="bmi_weight">體重 (kg)</string>
    <string name="bmi_btn">計算BMI值</string>
    <string name="bmi_result">你的BMI值是</string>
    <string name="advice_light">你該多吃點</string>
    <string name="advice_average">體型很棒喔!</string>
    <string name="advice_heavy">你該節食了</string>
</resources>

然後要使用strings.xml的代號也很簡單,
Android都會編譯到R裡面,
在xml呼叫用 @string/bmi_hello 即可
在java呼叫要用 R.string.bmi_hello,
不過要轉換成String才能正常使用 getText(R.string.bmi_hello),
以下是activity_main.xml修改後的結果

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TextView
            android:id="@+id/TextView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:text="@string/bmi_hello" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/bmi_height" />

        <EditText
            android:id="@+id/height"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="numberDecimal" />

        <TextView
            android:id="@+id/textView3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/bmi_weight" />

        <EditText
            android:id="@+id/weight"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="numberDecimal" />

        <Button
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/bmi_btn" />

        <TextView
            android:id="@+id/result"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textAppearance="?android:textAppearanceLarge"/>

        <TextView
            android:id="@+id/suggest"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textAppearance="?android:textAppearanceLarge"/>
    </LinearLayout>
</android.support.constraint.ConstraintLayout>

介面跟昨天一樣
https://ithelp.ithome.com.tw/upload/images/20181014/20105694F5VgVFVdFm.png


上一篇
[Day 07] 我的第一個Android程式 - BMI程式設計(二) 簡介EditText的inputType
下一篇
[Day 09] 我的第一個Android程式 - BMI程式設計(四) 多國語系1
系列文
[Andriod] Andriod Studio 從入門到進入狀況33

尚未有邦友留言

立即登入留言