私の Android プロジェクトでは、既にカスタム ダイアログを作成しました。これは、ユーザーが特定の色を選択するためにカラー セルの大きなマトリックスを表示できるようにする、SelectColorDialog
extendsという名前のクラスです。Dialog
ダイアログは、コールバック関数を介して、選択された色の値 (としてInteger
) をダイアログの開始者 (通常はアクティビティ) に返します。
SelectTypefaceDialog
簡単にフォントを選択できるように、同様のカスタム ダイアログ があります。使用可能な書体のリストがListView
行として表示され、それぞれが名前で識別され、関連する短いサンプル テキストがその書体でレンダリングされます。利用可能な書体には、NORMAL、MONOSPACE などの通常のドロイド フォントと、ユーザーが SD カードの特定のサブディレクトリにロードする外部ソースの TTF フォント ファイルが含まれます。
これらのカスタム ダイアログは、最初は、SharedPreferences、設定定義 XML ファイル、または任意の PreferenceActivity と組み合わせて直接使用するようには設計されていませんでした。代わりに、各ダイアログは、ユーザーがボタンを押すか、メニュー項目を介して、任意のアクティビティからポップアップできます。これらのダイアログを作成するアクティビティ クラスには、ユーザーがいつ色やフォントを選択したかを検出するための内部コールバック クラス (選択イベント リスナー) もあります。
これら 2 つのダイアログには、[OK] ボタンと [キャンセル] ボタンがありません。代わりに、ユーザーはダイアログ内のアイテム (ある種のビュー) をクリックして、対応する色または書体の値を選択するか (暗黙の OK)、デバイスの戻るボタンを押して何もアクションを実行せずにダイアログを閉じます (暗黙のキャンセル)。 .
preferences.XML
さらに進んで、これら 2 つのカスタム ダイアログを、および関連するを介して共有設定フレームワークに組み込みたいと思いますPreferenceActivity
。
可能であれば、これらの既存のダイアログに直接基づいて2 つのサブクラスを作成したいと考えDialogPreference
ていますが、その方法がわかりません。私はできないのではないかと思います。最初からやり直して、現在カスタム ダイアログ クラスにあるすべての Java コード (色またはフォントの表示と選択用) を直接カスタムDialogPreference
クラスにコピーまたは適合させる必要があると思います。おそらくオーバーライドonCreateDialogView()
および/または他の方法で?