[解決済み] setMultiChoiceItemsを使ったカスタムダイアログ
2022-02-16 09:46:55
質問
以下の画像のように、ユーザーがオプションを選択できるようにしたい。
今現在、以下のようなことを行っています。
public static class CategoriesDialogFragment extends SherlockDialogFragment {
public static CategoriesDialogFragment newInstance(int title) {
CategoriesDialogFragment frag = new CategoriesDialogFragment();
Bundle args = new Bundle();
args.putInt("title", title);
frag.setArguments(args);
return frag;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
int title = getArguments().getInt("title");
return new AlertDialog.Builder(getActivity())
.setIcon(R.drawable.alert_dialog_icon)
.setTitle(title)
.setMultiChoiceItems(_categories, _selections,
new DialogSelectionClickHandler())
.setPositiveButton(R.string.alert_dialog_ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
((MainActivity) getActivity())
.doPositiveClick();
}
}).create();
/*
* .setNegativeButton(R.string.alert_dialog_cancel, new
* DialogInterface.OnClickListener() { public void
* onClick(DialogInterface dialog, int whichButton) {
* ((MainActivity) getActivity()) .doNegativeClick(); } })
*/
}
public class DialogSelectionClickHandler implements
DialogInterface.OnMultiChoiceClickListener {
public void onClick(DialogInterface dialog, int clicked,
boolean selected) {
// Log.i("ME", _options[clicked] + " selected: " + selected);
}
}
}
しかし、私は画像のようにすべてのオプションを追加したいのです。そのため、カスタムダイアログを作成しなければならないと思います。ネイティブのsetMultiChoiceItemsを拡張して、コードの処理を減らすことは可能でしょうか?
どうすればいいですか?
おそらく
setCustomTitle()
メソッドで
AlertDialog.Builder
クラスを作成し、タイトルテキストを含む独自のタイトルを作成します。
すべて
CheckBox
のようなものです。
new AlertDialog.Builder(getActivity())
.setIcon(R.drawable.alert_dialog_icon)
.setTitle(title)
.setCustomTitle(getLayoutInflater().inflate(R.layout.custom_title, null));
ここで
R.layout.custom_title
があります。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/textView1"
style="?android:attr/textAppearanceLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Dialog title"
android:textColor="#ffffff" />
<TextView
android:id="@+id/all"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="All"
android:textColor="#ffffff" />
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
その他、スタイルを微調整して、見栄えを良くする必要があります。
しかし、ダイアログ全体のレイアウトを見ると、カスタムの
Dialog
クラスで、そのために
setMultiChoice()
メソッドは使用できません(ただし、最終的には簡単に再現できます)。
関連
-
[解決済み】Android: Intent エラーを処理するアクティビティは見つかりませんでしたか?どのように解決するのか
-
[解決済み】シンボル 'AppCompatActivity' を解決できない。
-
[解決済み] [Solved] Unsupported method: ベースコンフィグ.getApplicationIdSuffix()
-
[解決済み】ビットマップを保存する場所について
-
[解決済み] Android Studioで「URIが登録されていません」と報告されるのはなぜですか?[クローズド]
-
[解決済み] エラー - Android リソースのリンクに失敗しました (AAPT2 27.0.3 Daemon #0)
-
[解決済み] Android Fragment no view found for ID?
-
[解決済み] android.intent.action.MAINの意味は何ですか?
-
[解決済み] Androidでイメージビューの背景を透明に設定する
-
[解決済み] アンドロイドでカスタムダイアログボックスを作成する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Android - SDKバージョン23のアップデート後、ACTION-VIEWインテントフィルタを持つアクティビティを少なくとも1つ追加する。
-
[解決済み】Android: Intent エラーを処理するアクティビティは見つかりませんでしたか?どのように解決するのか
-
[解決済み】このアクティビティは、すでにウィンドウ装飾によって提供されるアクションバーを持っています。
-
[解決済み】Android Studioでマニフェストのマージに失敗し、複数のエラーが発生した。
-
[解決済み】Android Studio。adbバージョン」の結果を取得できない
-
[解決済み】カメラサービスへの接続に失敗しました。
-
[解決済み] TypeError: cb.apply は関数ではありません。
-
[解決済み] AndroidのADBデバイスが不正に
-
[解決済み] SDKの場所がandroid studioで見つからない
-
[解決済み] ADBエラー:デーモンに接続できない