【Androidアプリケーションの設定画面を作ろう】DialogPreferenceを使う

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

DialogPreferenceは設定項目をクリックした時にダイアログを表示し、ユーザーに値を入力または選択してもらうための機能が定義された抽象クラスです。
このままでは使用することができないため、継承して自作の設定項目を作って使用します。

ダイアログの設定

クリックした時に表示されるダイアログはAlertDialogが使用されます。
DialogPreferenceにはこのダイアログのタイトルやメッセージ等を変更する属性が多数定義されています。
android:dialogIconダイアログのアイコンを設定します。画像リソースIDを指定することができます。
android:dialogTitleダイアログのアイコンを設定します。文字列や文字リソースIDを指定することができます。
android:dialogMessageダイアログのメッセージを設定します。文字列や文字リソースIDを指定することができます。
android:negativeButtonTextダイアログのネガティブボタンに表示されるテキストを設定します。文字列や文字リソースIDを指定することができます。
android:positiveButtonTextダイアログのポジティブボタンに表示されるテキストを設定します。文字列や文字リソースIDを指定することができます。
android:dialogLayoutダイアログに表示されるレイアウトを変更します。dialogLayoutで設定したレイアウトはダイアログのメッセージの代わりに表示されます。

DialogPreferenceを使用する

今回はDialogPreferenceのxml属性を確認するために、抽象クラスであるDialogPreferenceを継承しただけのクラスを作成します。
public class MyDialogPreference extends DialogPreference {
    public MyDialogPreference(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public MyDialogPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
}

    <yona.mypreference.MyDialogPreference
        android:title="MyDialogPreference"
        android:dialogIcon="@mipmap/ic_launcher"
        android:dialogTitle="title"
        android:dialogMessage="message"
        android:negativeButtonText="negative"
        android:positiveButtonText="positive"/>

    <yona.mypreference.MyDialogPreference
        android:title="MyDialogPreference"
        android:dialogMessage="無視されるメッッセージ"
        android:dialogLayout="@layout/preference_widget_layout"/>