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

问题描述:

我想创建自定义对话框。所以我创建了一个模板'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

现在我想添加两个按钮(一个正一负的按钮),在底部。我怎样才能做到这一点?

+0

我首先建议尝试setPositiveButton()和setNegativeButton()。 – 2013-02-09 00:12:57

+1

@Code-Guru这些方法不存在于Dialog类中。大卫,为什么不使用AlertDialog而不是重新创建它? – Sam 2013-02-09 00:24:28

+0

@Sam对不起,我应该首先仔细检查API指南。您可以使用AlertDialog而不是普通的对话框。它有一个'setButton()'方法,可以做你想做的事情。 – 2013-02-09 00:30:21

我只是让自己的自定义类来模拟一个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); 
    } 
} 
+0

我们不能这样做builder.setPositiveButton(“OK”, positiveClick)for _Builder android.app.AlertDialog.Builder.setPositiveButton(CharSequence text,OnClickListener listener)_ – 2013-11-18 11:54:09

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