【Androidアプリケーションの設定画面を作ろう】Preferenceの挙動を変更する

このエントリーを Google ブックマーク に追加
Pocket
[`yahoo` not found]

Preferenceはすべての設定項目の基礎となるクラスです。
そのため、このクラス自体を実際に使うことはありませんが、たくさんの重要な機能が定義されています。
Preferenceをxmlファイルのタグとして使い、属性を設定することで「見た目」・「プリファレンスとの連携」・「動き」を変更することができます。

Preferenceの挙動を変更する

Preferenceを使い設定画面に表示されるGUIはユーザーのクリックを受け付けるようになります。
Preferenceにはユーザーの操作を受け付ける時の挙動を設定する属性が多数定義されています。
android:enabled設定項目の操作可能状態を設定します。trueの場合に設定項目は操作可能になり、falseの場合に設定項目は操作不可能になります。
android:shouldDisableView操作不可状態の場合に操作不可とわかる見た目に変化させるかを設定します。trueの場合は設定項目がグレーアウトされますが、falseの場合には見た目は変化しません。
android:selectable設定項目の選択可能状態を設定します。trueの場合は選択が可能ですが、falseの場合は選択が不可能となります。また、enabledとの違い見た目の変化はありません。
android:dependency設定項目のプリファレンスへの依存性を設定し、trueの場合は操作可能状態になり、falseの場合は操作不可能状態となります。他設定項目のkey属性を文字列で設定します。
    <Preference
        android:title="A"
        android:summary="summary"
        android:enabled="false"
        android:shouldDisableView="true"
        android:selectable="false"/>
    
    <Preference
        android:title="C"
        android:summary="summary"
        android:dependency="setting_A"
        android:selectable="false"/>

    <CheckBoxPreference
        android:title="CheckBox"
        android:key="setting_A"/>

ListView内でのPreferenceの挙動を設定する

Preferenceを使って作られるViewはListView上に配置されます。
PreferenceのListView上での取り扱われ方を設定する属性があります。
android:orderListView内での並び順を設定します。order属性が無いノードを登場順の後にorder属性の昇順で並びます。
android:recycleEnabledPreferenceで作られたViewがListView内で再利用するかどうかを設定します。trueの場合は再利用され、falseの場合は再利用されません。
    <Preference
        android:title="order 100"
        android:order="100"/>

    <Preference
        android:title="order none"/>

    <Preference
        android:title="order 1"
        android:order="1"/>

    <Preference
        android:recycleEnabled="true"/>

まとめ

今回はPreferenceの細かい挙動を設定する属性について説明しました。
次回はレイアウトを変更する属性を説明します。