如何在自定义对话框中创建正面和负面按钮

时间:2013-02-09 00:11:51

标签: android button user-interface dialog customdialog

我想创建一个自定义对话框。所以我创建了一个模板' dialog_change'然后打开对话框。

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

enter image description here

现在我想在底部添加两个按钮(一个正面和一个负面按钮)。我怎么能这样做?

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:1)

您可以将两个按钮添加到用于对话框的自定义布局(即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();