如何在自定义对话框中创建正面和负面按钮
问题描述:
我想创建自定义对话框。所以我创建了一个模板'dialog_change',我打开对话框。如何在自定义对话框中创建正面和负面按钮
Dialog myDialog = new Dialog(Overview.this);
myDialog.setContentView(R.layout.dialog_change);
myDialog.setTitle("My Custom Dialog Title");
myDialog.show();
现在我想添加两个按钮(一个正一负的按钮),在底部。我怎样才能做到这一点?
答
我只是让自己的自定义类来模拟一个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();
我首先建议尝试setPositiveButton()和setNegativeButton()。 – 2013-02-09 00:12:57
@Code-Guru这些方法不存在于Dialog类中。大卫,为什么不使用AlertDialog而不是重新创建它? – Sam 2013-02-09 00:24:28
@Sam对不起,我应该首先仔细检查API指南。您可以使用AlertDialog而不是普通的对话框。它有一个'setButton()'方法,可以做你想做的事情。 – 2013-02-09 00:30:21