2011-02-11 73 views
7

我有一定的要求,弹出警告对话框这就好比EULA屏幕。 这将有文字描述有一个复选框EULA“不要再显示此”,并在年底确定2个按钮和取消。警报对话框文本follwed有一个复选框和2个按钮

任何有关同一帮助表示赞赏。

是否有可能有TextView的和复选框的警告对话框的一部分吗?如果是的话,该怎么做? 任何示例代码表示赞赏。

-Thanks &问候, 馒头

+3

的EULA永远不会有“不要再显示这个”有点事。底部只提供同意和不同意按钮。并在您的程序的某个菜单中放置一个链接到您的EULA,以便用户随时查看它。 – Mudassir 2011-02-11 03:25:18

+0

另外,如果这不是EULA的最佳设计解决方案,则可能需要其他可以选择执行进一步操作的对话框。 – 2011-07-15 17:52:28

回答

15

我有Mudassir同意,最终用户许可协议并不想有“不再显示”复选框,但这里是你如何能去尽管这样做类似的东西。

可以使用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消息”)来设置您的EULA消息。

+0

我认为这个解决方案缺少一行eulaBuilder.setView(eulaLayout); – Juhani 2012-01-02 10:29:16

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)第2方法,有更多的定制布局:

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