5.1.1. 設定画面の追加 - 画面レイアウト作成

3.アプリ作成 (サンプル)で作成したサンプルアプリに、設定画面を追加していきます。
ここでは、設定画面用のレイアウトファイル(.xml)の作成について説明します。

設定画面のレイアウトには、Android標準で用意されているPreferenceを使用します。
このPreferenceを使用すると、設定画面の作成と設定値のファイル保存/読込を簡単に行うことができます。

では、xmlファイルの作成から順に設定画面のレイアウトの作成について説明していきます。

設定画面用のレイアウトファイル(.xml)を作成

設定画面用のレイアウトファイル(.xml)を新規に作成します。
このファイルは、プロジェクトの [res] - [xml] フォルダに作成します。
フォルダの作成は、プロジェクトの [res]フォルダを右クリックし、[新規(W)] → [フォルダー]を選択します。
以下のダイアログが表示されるので、フォルダー名に「xml」を入力し、「完了」ボタンを押下します。
フォルダ作成ダイアログ プロジェクトに[xml]フォルダが作成されるので、このフォルダに設定画面用の xml ファイルを作成します。
[xml] フォルダを右クリックし、[新規] → [Android XML ファイル] を選択します。
以下のダイアログが表示されます。 xmlファイル作成ダイアログ
各項目を、以下のように設定します。

項目 設定
リソース・タイプ Preference
プロジェクト SplitTheCost
ファイル setting_pref

[res] - [xml] フォルダに、setting_pref.xml ファイルが作成されますので、 このファイルに設定画面のレイアウトを作成していきます。

レイアウトの定義

先ほど作成した setting_pref.xml ファイルを開くと、PreferencScreen タグが記述されています。この中に設定画面に表示する項目を追加していきます。
今回追加する項目は、「端数」、「端数切り上げ」の2つです。「端数」はあらかじめ設定した項目リストから選択する設定とし、 「端数切り上げ」はON/OFFのチェックボックスとします。


では、「端数」の設定から順に作成していきます。
「端数」の設定は、「1, 500, 1000」の項目から選択するようにします。
このようにリストから選択して設定する項目を作成する時は、ListPreference を使用します。
この ListPreference を使用すると、「端数」の項目を押下するとリストから項目を選択するダイアログが表示される、以下のような設定となります。

端数設定イメージ

「端数」設定項目の ListPreference は、以下の様に定義します。

<ListPreference
    android:key="key_fraction"
    android:title="@string/fraction"
    android:dialogTitle="@string/dlg_fraction_title"
    android:entries="@array/list_fraction"
    android:entryValues="@array/list_fraction_val"
    android:defaultValue="500"
/>

各設定項目は、以下のようになります。

項目 説明
android:key 設定項目を識別するキーを設定します。これは重複しない文字列を設定する必要があります。
(設定値を読み込むときに、このキーを使用します。)
android:title 設定項目のタイトルを設定します。
android:dialogTitle 設定を押下したときに表示される、リスト選択ダイアログのタイトルを設定します。
android:entries 設定を押下したときに表示される、リスト選択ダイアログに表示される選択項目を設定します。
android:entryValues 設定を押下したときに表示される、リスト選択ダイアログの選択を識別する値を設定します。
android:defaultValue 初期値を設定します。


android:title と android:dialogTitle の文字は、strings.xml で定義した文字を設定するため、
strings.xml ファイルに、以下の文字定義を追加します。

<string name="fraction">端数</string>
<string name="dlg_fraction_title">端数を選択してください</string>


また、android:entries と android:entryValues 設定する値には、arrays.xml で定義した文字を設定します。
arrays.xml は、配列の値を定義するファイルで、端数の選択項目を配列で定義します。
arrays.xmlファイルの <resources> タグの中に、以下を追加します。

<string-array name="list_fraction">
    <item>1</item>
    <item>500</item>
    <item>1000</item>
</string-array>
<string-array name="list_fraction_val">
    <item>1</item>
    <item>500</item>
    <item>1000</item>
</string-array>



次に、「端数切り上げ」の項目を追加していきます。
「端数切り上げ」の項目は ON/OFF のチェックボックスなので、CheckBoxPreference というものを使用します。
CheckBoxPreference は、名前のとおりチェックボックスでの設定となります。
設定画面のレイアウトファイル setting_pref.xml の ListPreference の後に、以下を追加します。

<CheckBoxPreference
    android:key="key_roundup"
    android:title="@string/roundup_title"
    android:defaultValue="false"
/>


CheckBoxPreference の設定は、key と title と defaultValue です。
key と title は、ListPreference の設定と同様に、識別するキーと設定項目のタイトルの設定です。
CheckBoxPreference の defaultValue には、true/false を設定します。
また、 title に設定する文字は、strings.xml ファイル定義した文字を設定するので、strings.xmlに定義を以下を追加します。

<string name="roundup_title">端数切り上げ</string>



これで、設定設定画面のレイアウトの定義は完了です。
以下にこれまでに設定した各ファイルの内容をのせますので、間違いがないか確認してみてください。

setting_pref.xml

設定画面のレイアウトファイル setting_pref.xml は、以下のようになります。

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
    
    <ListPreference
        android:key="key_fraction"
        android:title="@string/fraction"
        android:dialogTitle="@string/dlg_fraction_title"
        android:entries="@array/list_fraction"
        android:entryValues="@array/list_fraction_val"
        android:defaultValue="500"
    />
    
    <CheckBoxPreference
        android:key="key_roundup"
        android:title="@string/roundup_title"
        android:defaultValue="false"
        />

</PreferenceScreen>

strings.xml

文字列の定義ファイル strings.xml は、以下のようになります。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">SplitTheCost</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>
    <string name="numPeople">人数:</string>
    <string name="people">人</string>
    <string name="money">金額:</string>
    <string name="yen">円</string>
    <string name="calc">計算</string>
    <string name="oneMoney">一人当たりの金額</string>
    <string name="result">0</string>
    
    <!-- 設定画面用 -->
    <string name="fraction">端数</string>
    <string name="dlg_fraction_title">端数を選択してください</string>
    <string name="roundup_title">端数切り上げ</string>
  
</resources>

arrays.xml

配列の定義ファイル arrays.xml は、以下のようになります。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- 端数リスト用 -->
    <string-array name="list_fraction">
        <item>1</item>
        <item>500</item>
        <item>1000</item>
    </string-array>
    <string-array name="list_fraction_val">
        <item>1</item>
        <item>500</item>
        <item>1000</item>
    </string-array>

</resources>



次は・・・
このレイアウトを使用する、設定画面クラスを作成していきます。
5.1.2. 画面クラスの作成