我想创建一个自定义对话框。所以我创建了一个模板“dialog_change”并打开了对话框。
Dialog myDialog = new Dialog(Overview.this);
myDialog.setContentView(R.layout.dialog_change);
myDialog.setTitle("My Custom Dialog Title");
myDialog.show();
现在我想在底部添加两个按钮(一个正按钮和一个负按钮)。我怎样才能做到这一点?
我想创建一个自定义对话框。所以我创建了一个模板“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);
}
}
您可以将这两个按钮添加到您用于对话框的自定义布局中(即 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();