9

非常に単純なカスタム ダイアログがあり、AlertDialog で行うように、XML ファイルを変更せずに肯定ボタンを追加したくありませんが、それが可能かどうかはわかりません。これはコードです:

final Dialog dialog = new Dialog(MyActivity.this);
dialog.requestWindowFeature(Window.FEATURE_LEFT_ICON);
dialog.setContentView(R.layout.dialog);
dialog.setTitle("Settings");
dialog.show();
4

3 に答える 3

13

ビルダーを使用する必要があります。

LayoutInflater inflater = LayoutInflater.from(this);
View dialog_layout = inflater.inflate(R.layout.dialog,(ViewGroup) findViewById(R.id.dialog_root_layout));
AlertDialog.Builder db = new AlertDialog.Builder(MyActivity.this);
db.setView(dialog_layout);
db.setTitle("settings");
db.setPositiveButton("OK", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {
    }
});
AlertDialog dialog = db.show();
于 2012-05-22T22:24:46.427 に答える
2

AlertDialog.Builderクラスを使用できます。

http://developer.android.com/reference/android/app/AlertDialog.Builder.html

を使用してその新しいインスタンスを作成しますAlertDialog.Builder myAlertDialogBuilder = new AlertDialog.Builder(context)。次に、などのメソッドを使用setTitle()setView()てカスタマイズします。このクラスには、ボタンを設定するためのメソッドもあります。 setPositiveButton(String, DialogInterface.OnClickListener)ボタンを設定します。最後に、を使用AlertDialog myAlertDialog = myAlertDialogBuilder.create()してAlertDialogのインスタンスを取得します。これは、などのメソッドを使用してさらにカスタマイズできますsetCancelable()

編集:また、ドキュメントから:http: //developer.android.com/guide/topics/ui/dialogs.html

「Dialogクラスは、ダイアログを作成するための基本クラスです。ただし、通常、Dialogを直接インスタンス化するべきではありません。代わりに、...サブクラスの1つを使用する必要があります。」

AlertDialogを本当に使用したくない場合は、Dialogクラスをそのまま使用するのではなく、自分で拡張することをお勧めします。

于 2012-05-22T22:18:33.603 に答える
1

こんな機能も使えます

public void showMessage(String title,String message)
{
    AlertDialog.Builder builder=new AlertDialog.Builder(this);
    builder.setCancelable(true);
    builder.setTitle(title);
    builder.setMessage(message);
    builder.setPositiveButton("OK", new
            DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                }
            });
    builder.show();
}
于 2016-04-18T03:26:48.433 に答える