設定アクティビティに設定値の表示
左側:前項の設定アクティビティ(赤枠部:テキストやリストの設定項目の設定値がわからない)
右側:本項の設定アクティビティ(赤枠部:テキストやリストの設定項目の設定値がわかる)
設定アクティビティを作成する方法を解説します。
前項「設定アクティビティのカスタマイズ」で作成した設定アクティビティは、 「テキストを指定する設定項目」や「リストから選択する設定項目」の設定値は表示されません。設定値を確認するには、設定項目をクリックし、「テキスト編集ダイアログ」や「リスト選択ダイアログ」を表示する必要があります。
本項では、設定アクティビティに、「テキストを指定する設定項目」や「リストから選択する設定項目」の右側に設定値が表示されるようにします。
(設定ダイアログに設定値を表示する別の方法としては、設定項目のTitle欄の下のSummary欄に設定値を表示する方法もあります。Summary欄に設定値の表示は、プリファレンスファイルの設定項目に「app:useSimpleSummaryProvider="true"」を追加することで実現できます。設定アクティビティの作成の自動生成されたプリファレンスファイル「root_preferences.xml」に記述あり。)
解説
前項に対する処理の変更は以下です。
- 設定アクティビティの設定項目の右側に設定値を表示するためのウィジェットレイアウトを作成します。
- 「テキストを指定する設定項目」「リストから1つの項目を選択する設定項目」「リストから複数の項目を選択する設定項目」の設定値を表示するプリファレンスクラスを作成します。
- プリファレンスファイルに定義した「テキストを指定する設定項目」「リストから1つの項目を選択する設定項目」「リストから複数の項目を選択する設定項目」のプリファレンスクラスを、設定値を表示するプリファレンスクラスに変更します。
実装
アプリの仕様
- アプリを起動すると、メインアクティビティが表示される。
- オプションメニューの「Settings」を選択すると、設定アクティビティに移行する。
- 設定アクティビティには、自前の設定項目が表示される。
- メインアクティビティには、自前の設定項目の設定値が表示される。
- 設定アクティビティの「テキストを指定する設定項目」「リストから1つの項目を選択する設定項目」「リストから複数の項目を選択する設定項目」の右側に設定値が表示される。(本項で追加)
プロジェクトを開く
「設定アクティビティのカスタマイズ」で作成したプロジェクトを開きます。
ウィジェットレイアウトの作成
設定アクティビティの設定項目の右側に設定値を表示するためのウィジェットレイアウトを作成します。
「Project」ペインの「app > res > layout」を右クリックします。
右クリックメニュー「New > Layout Resource File」を選択します。
File name欄に「widget_valuetext」と入力します。
「OK」ボタンを押します。
widget_valuetext.xml が作成されます。
レイアウト内容を、設定値を表示するためのTextViewのみにします。
widget_valuetext.xml の内容を以下のようにします。
設定値表示テキスト編集プリファレンスクラスの作成
設定アクティビティに設定値を表示するテキスト編集プリファレンスクラスを作成します。
「Project」ペインの「app > java > ドメイン.パッケージ名」を右クリックします。
右クリックメニュー「New > Java Class」を選択します。
クラス名欄に「DisplayValueEditTextPreference」と入力しエンターキーを押します。
(変更なし)
「OK」ボタンを押します。
「DisplayValueEditTextPreference」クラスができました。
「DisplayValueEditTextPreference」クラスファイルの内容を以下のようにします。
設定値表示リスト選択プリファレンスクラスの作成
設定アクティビティに設定値を表示するリスト選択プリファレンスクラスを作成します。
設定値表示テキスト編集プリファレンスクラスの作成と同様の手順で、以下の2つの設定値表示リスト選択プリファレンスクラスを作成します。
- DisplayValueListPreference
- リストから1つの項目を選択するプリファレンスクラス。設定アクティビティに選択した設定値を表示する。
- DisplayValueMultiSelectListPreference
- リストから複数の項目を選択するプリファレンスクラス。設定アクティビティに選択した設定値を表示する。
「DisplayValueListPreference」クラスファイルの内容を以下のようにします。
「DisplayValueMultiSelectListPreference」クラスファイルの内容を以下のようにします。
プリファレンスファイルの編集
プリファレンスファイルに定義した「テキストを指定する設定項目」「リストから1つの項目を選択する設定項目」「リストから複数の項目を選択する設定項目」のプリファレンスクラスを、設定値を表示するプリファレンスクラスに変更します。
- 「EditTextPreference」を「パッケージ名.DisplayValueEditTextPreference」に変更します。
- 「ListPreference」を「パッケージ名.DisplayValueListPreference」に変更します。
- 「MultiSelectListPreference」を「パッケージ名.DisplayValueMultiSelectListPreference」に変更します。
プリファレンスファイル「root_preferences.xml」の内容を以下のようにします。
リビルドし、エラー、警告がないことを確認します。
実行
Android端末にて、動作確認。
設定アクティビティに、 「テキストを指定する設定項目」や「リストから選択する設定項目」の設定値が、設定項目の右側に表示されます(赤枠部)。設定値を確認するにために設定項目をクリックする必要がなくなりました。
それ以外はの動作は、前項と変わりません。
関連ページ
- 設定アクティビティの作成
- 設定アクティビティのカスタマイズ - 前項
- 設定アクティビティに設定値の表示 - 本項
- 色設定プリファレンス - 次項
- 設定アクティビティに設定色の表示