我有一个要求,需要弹出类似EULA屏幕的警告对话框。 其中将有描述EULA的文本,带有“不再显示”复选框,并在最后放置2个按钮,分别为“确定”和“取消”。
如何将文本视图和复选框作为警告对话框的一部分呢?
我有一个要求,需要弹出类似EULA屏幕的警告对话框。 其中将有描述EULA的文本,带有“不再显示”复选框,并在最后放置2个按钮,分别为“确定”和“取消”。
如何将文本视图和复选框作为警告对话框的一部分呢?
我必须同意Mudassir的观点,EULA不应该有“不再显示”复选框,但是下面是您可以实现类似功能的方法。
您可以使用AlertDialog.Builder来构建包含视图(您可以在XML中设计)的对话框。以下是一个示例:
AlertDialog.Builder eulaBuilder = new AlertDialog.Builder(this);
LayoutInflater eulaInflater = LayoutInflater.from(this);
View eulaLayout = eulaInflater.inflate(R.layout.eula, null);
eulaBuilder.setView(eulaLayout);
Checkbox dontShowAgain = (CheckBox)eulaLayout.findViewById(R.id.dontShowAgain);
eulaBuilder.setPositiveButton("Agree", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface d, int m) {
// Do something
}
});
eulaBuilder.setNegativeButton("Disagree", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface d, int m) {
// Do something
}
});
eulaMsg = eulaBuilder.create();
您可以创建一个只包含一个CheckBox对象的XML文件。然后将该视图添加到AlertDialog.Builder中。使用AlertDialog.Builder.setMessage("EULA message here")来设置您的最终用户许可协议消息。
请看下这两种不同的方法:
1) 第一种方法更简单且非常快速:
CheckBox checkBox = new CheckBox(this);
checkBox.setText("This is your checkbox message");
LinearLayout linearLayout = new LinearLayout(this);
linearLayout.setLayoutParams( new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.FILL_PARENT));
linearLayout.setOrientation(1);
linearLayout.addView(checkBox);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setView(linearLayout);
alertDialogBuilder.setTitle("This is the title of alert dialog");
alertDialogBuilder.setMessage("This is the message of alert dialog");
alertDialogBuilder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
// do something
}
});
alertDialogBuilder.show();
2) 第二种方法,具有更自定义的布局:
看这个页面,这里还有创建复选框的XML代码。