3

カスタム ダイアログを作成したい。そこで、テンプレート 'dialog_change' を作成し、ダイアログを開きます。

Dialog myDialog = new Dialog(Overview.this);
myDialog.setContentView(R.layout.dialog_change);
myDialog.setTitle("My Custom Dialog Title");
myDialog.show();

ここに画像の説明を入力

ここで、下部に 2 つのボタン (1 つの正のボタンと 1 つの負のボタン) を追加します。どうやってやるの?

4

2 に答える 2

5

独自のカスタム クラスを作成して AlertDialog をシミュレートするだけです。このようにして、文字列を添付せずに独自のレイアウトを使用できます。(完全にスタイル設定された AlertDialog が必要な場合、フレームを完全に取り除くことができないという奇妙な問題がいくつかあります)。このようなものですが、これを必要なだけ完全に拡張できます。

public class CustomDialog extends Dialog {
    private Button positive, negative;

    public CustomDialog(Context context) {
        super(context);
        initialize(context);
    }

    protected CustomDialog(Context context, boolean cancelable, OnCancelListener cancelListener) {
        super(context, cancelable, cancelListener);
        initialize(context);
    }

    public CustomDialog(Context context, int theme) {
        super(context, theme);
        initialize(context);
    }

    private void initialize(Context c) {
        //Inflate your layout, get a handle for the buttons

        positive = (Button)layout.findViewById(R.id.positive):
        negative = (Button)layout.findViewById(R.id.negative):

        positive.setVisibility(View.GONE);
        negative.setVisibility(View.GONE);
    }

    public void setPositiveButton(String buttonText, View.OnClickListener listener) {
        positive.setText(buttonText);
        positive.setOnClickListener(listener);
        positive.setVisibility(View.VISIBLE);
    }

    public void setNegativeButton(String buttonText, View.OnClickListener listener) {
        negative.setText(buttonText);
        negative.setOnClickListener(listener);
        negative.setVisibility(View.VISIBLE);
    }
}
于 2013-02-09T01:11:45.383 に答える
1

ダイアログに使用しているカスタムレイアウトに2つのボタンを追加できます(つまり、dialog_change)。そして、次のようにダイアログを作成した後、それらにアクセスできます。

Dialog myDialog = new Dialog(Overview.this);
View view = LayoutInflater.from(context).inflate(R.layout.dialog_change,null);
myDialog.setContentView(view);
myDialog.setTitle("My Custom Dialog Title");

Button button1 = (Button)view.findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v){
        dialog.dismiss();
    }
});
//Similarly for the second button
myDialog.show();
于 2013-02-09T00:26:52.433 に答える