libro
www.tuyano.com
Google androidプログラミング入門

設定画面を作る (3/6)

作成:2010-11-06 15:05
更新:2010-11-06 15:24

■設定画面のレイアウトを用意する

では、設定画面の作成に進みましょう。まずは、表示する画面をレイアウト用のXMLファイルとして作成します。

これは、「layout」フォルダではなく、「xml」というフォルダに用意しましょう。「res」内に、新たに「xml」フォルダを作成し、そこに「pref.xml」というXMLファイルを作成してください。そして、下に掲載したコードのように記述をします。

設定画面用のレイアウトは、<PreferenceScreen>というタグを使って記述します。この中に、以下のような形でタグを組み込んでいきます。

<PreferenceScreen>
    <PreferenceCategory>
        ……設定用コンポーネント……
    </PreferenceCategory>

    ……必要なだけPreferenceCategoryを用意……
</PreferenceScreen>
設定項目は、「カテゴリ」と、「設定用のコンポーネント」から構成されます。カテゴリは、<PreferenceCategory>タグで用意されます。これは文字通りカテゴリを示すもので、複数のコンポーネントをひとまとめにして表示するためのものです。

このカテゴリのタグ内に、具体的な設定項目のコンポーネントを記述します。ここでは、以下の2つのコンポーネントを用意してあります。

EditTextPreference――通常のテキストを入力して設定するものです。
ListPreference――リストから項目を選んで設定するものです。

これらのコンポーネントのタグでは、keytitlesummarydefaultvalueといった属性を用意します。keyはIDに相当するもので、コンポーネントを識別するのに用います。titlesummaryは、タイトルと説明文で、実際に設定画面に表示されます。defaultvalueはデフォルトで設定される値です。

※ListPreferenceの表示用XMLファイルについて

テキストの入力はそのままでいいのですが、リストを使った設定は、表示するリストの内容を用意しないといけません。これは、XMLファイルで用意しておくのが一般的です。「values」フォルダの中に、新たに「arrays.xml」というXMLファイルを作成し、下のコードのように記述をしてください。

リストの表示は、<string-array>タグを使って記述をします。これは文字通り「テキストの配列」を記述するためのものです。このタグ内に、<item>タグを使って表示する項目を用意します。

ListPreferenceの属性を見ると、android:entries="@array/mylist"という項目が用意されていますね? このandroid:entriesが、リストの項目を指定するものです。これで、@array/mylistと値を指定することにより、<string-array name="mylist">の配列がリストの項目として設定されます。

この他、android:entryValues="@array/mylist"という属性も用意されていますね。これは、リストの値を指定するものです。リストに表示されるテキストと、実際に設定される値がおことなる時などは、これを使って値だけを指定します。今回は特に値を別に設定していないので、どちらもstrings.xmlの内容を指定しておきました。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※「xml」内に用意する「pref.xml」


<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
		xmlns:android="http://schemas.android.com/apk/res/android">
	<PreferenceCategory
			android:title="EditText">
		<EditTextPreference android:key="myname"
				android:title="My Name"
				android:summary="My Name"
				android:defaultValue="" />
	</PreferenceCategory>
	<PreferenceCategory
			android:title="List">
		<ListPreference android:key="mylist"
				android:dialogTitle="My List"
				android:entries="@array/mylist"
				android:title="My List"
				android:summary="My List"
				android:entryValues="@array/mylist" />
	</PreferenceCategory>
</PreferenceScreen>


※「values」内に用意する「arrays.xml」


<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="mylist">
        <item>Hello</item>
        <item>Welcome</item>
        <item>Bye!</item>
    </string-array>
</resources>
※関連コンテンツ

「Google androidプログラミング入門」に戻る