带有文本的警报对话框,后面是复选框和2个按钮

时间:2011-02-11 03:19:54

标签: android

我要求弹出警告对话框,就像EULA屏幕一样。 其中将有一个描述EULA的文本,带有一个复选框“不再显示此内容”,最后两个按钮用于确定和取消。

如何将textview和checkbox作为警告对话框的一部分?

2 个答案:

答案 0 :(得分:16)

我必须同意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”)来设置您的EULA消息。

答案 1 :(得分:3)

看看这两种不同的方法:

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)第二种方法,采用更加自定义的布局:

看这个page,还有用于创建复选框的XML代码。