0

バージョン 2.2 から 4.2 で動作する警告ダイアログのカスタム スタイルを作成しようとしています。私が見つけた最良のアプローチは、使用することです

AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.AlertDialogCustom));

ただし、API 11 から利用できますが、それより古いバージョンでは動作しません。カスタム スタイルでアラート ダイアログを簡単に実装する方法を教えてください。ありがとう。

4

2 に答える 2

0

無痛についてはわかりませんが、私の経験では次の方法があります。

1) カスタム ビューまたはレイアウトを作成し、builder.setView(view) を介してビルダーに設定します。

2) AlertDialog ボタンがある場合 - それらはカスタム ビューの一部ではなく、View.OnClickListener ではなく DialogInterface.OnClickListener のイベントを発生させます。したがって、スタイルを設定する必要がある場合は、実際のアラートを作成するときに次のように動的に行う必要があります。

    alert = builder.create();
    alert.setOnShowListener(new DialogInterface.OnShowListener()
    {
        @Override
        public void onShow(DialogInterface dialog)
        {
            Button btnPositive = alert.getButton(Dialog.BUTTON_POSITIVE);
            // set custom stuff for your positive button

            Button btnNegative = alert.getButton(Dialog.BUTTON_NEGATIVE);
            // set custom stuff for your negative button
        }
    });

これは最も洗練されたソリューションではありませんが、これまでのところ、最小 API レベル 8 で同様に機能するものは他に見つかりませんでした。

于 2013-05-14T12:37:23.867 に答える
0

android-support-v4.jar を使用できます (このライブラリについてはこちらから読むことができます)

このライブラリを libs フォルダーに追加し、ビルド パスに追加します。

さて、ダイアログを作成するために、

convert はFragmentActivityによってアクティビティを拡張します(何も必要ありません。Activity の単なるサブクラスです)。

次のようなアクティビティ内に静的を作成する必要があります。

public static class ReportNameFragment extends DialogFragment {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle(R.string.enter_report_name);

        LayoutInflater inflater = getActivity().getLayoutInflater();
        View view = inflater.inflate(R.layout.enter_report_dialog, null);
        final EditText reportName = (EditText) view
                .findViewById(R.id.report_name);
        builder.setView(view)
                // Add action buttons
                .setPositiveButton(R.string.save,
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                //Positive Button task

                            }
                        })
                .setNegativeButton(R.string.cancel,
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                ReportNameFragment.this.getDialog()
                                        .cancel();
                            }
                        });
        return builder.create();
    }
}

そして、次のように記述して、アクティビティのどこからでもこのダイアログを呼び出します。

DialogFragment reportNameFragment = new ReportNameFragment();
            reportNameFragment.show(getSupportFragmentManager(),
                    "reportNameTypePicker");

ダイアログについて詳しく知りたい場合は、ここにアクセスしてください...

于 2013-05-14T12:47:19.403 に答える