【问题标题】:How to add multiple buttons on a single AlertDialog如何在单个 AlertDialog 上添加多个按钮
【发布时间】:2012-09-03 08:23:31
【问题描述】:

我有一个按钮,单击此按钮时,我想在单个 AlertDialog 上打开多个按钮,如下所示:

帮帮我:

我用这个....来添加多个按钮

alertDialog.setButton(delete, "Delete", new OnClickListener() {
        
        public void onClick(View v) {
            // TODO Auto-generated method stub
            
        }
    });

但我发现......,将 setButton() 更改为 setButton2().. 类似...... wt xcan 为此......

【问题讨论】:

  • 制作自定义对话框和膨胀的布局xml文件到setVIew()它。现在添加任意数量的按钮。

标签: android


【解决方案1】:

一个简单的解决方案没有xml

AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Title");
builder.setItems(new CharSequence[]
        {"button 1", "button 2", "button 3", "button 4"},
        new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                // The 'which' argument contains the index position
                // of the selected item
                switch (which) {
                    case 0:
                        Toast.makeText(context, "clicked 1", Toast.LENGTH_SHORT).show();
                        break;
                    case 1:
                        Toast.makeText(context, "clicked 2", Toast.LENGTH_SHORT).show();
                        break;
                    case 2:
                        Toast.makeText(context, "clicked 3", Toast.LENGTH_SHORT).show();
                        break;
                    case 3:
                        Toast.makeText(context, "clicked 4", Toast.LENGTH_SHORT).show();
                        break;
                }
            }
        });
builder.create().show();

【讨论】:

  • 很好的例子,比其他的更容易理解!谢谢!
  • 这对我有用!但是,这会为您提供垂直列表而不是水平列表。
  • 优于其他解决方案。
  • 但是如何为对话内容添加消息呢?
  • @teapeng : builder.setMessage() 覆盖了按钮,所以我猜你只剩下 builder.setTitle()
【解决方案2】:

我会用我自己的自定义视图 (my_alert_dialog.xml) 来扩充 AlertDialog。

AlertDialog.Builder alert = new AlertDialog.Builder(this);
LayoutInflater inflater = getLayoutInflater();
//inflate view for alertdialog since we are using multiple views inside a viewgroup (root = Layout top-level) (linear, relative, framelayout etc..)
View view = inflater.inflate(R.layout.my_alert_dialog, (ViewGroup) findViewById(R.id.root)); 

Button button1 = (Button) view.findViewById(R.id.button1); // etc.. for button2,3,4.
alert.setView(view);
alert.show();

【讨论】:

    【解决方案3】:

    如果您不自己制作视图,则只能创建带有 3 个按钮的 Alertdialog。

    您可以在 xml 中创建自己的自定义视图。

    但我建议你只做一个列表。

    检查 http://developer.android.com/guide/topics/ui/dialogs.html#AlertDialog "添加列表"

    【讨论】:

      【解决方案4】:
      Dialog dialog = new Dialog(context);
      RelativeLayout featureLayout = (RelativeLayout) View.inflate(this, R.layout.yourview, null);
      dialog.setContentView(featureLayout);
      dialog.show();
      

      【讨论】:

        【解决方案5】:
        int item = 0;
        ArrayList<String> list = new ArrayList<String>();
        ArrayList<Integer> intList = new ArrayList<Integer>();
        list.add("A");
        list.add("B");
        list.add("C");
        list.add("D"); 
        item = -1; 
        
         for (int i = 0; i < list.size(); i++) { 
            item++; 
            intList.add(i); 
          }
        
        showRatingBarAlertDialog(intList);
        
        private void showRatingBarAlertDialog(ArrayList<Integer> Id) {
            if (item != -1) {
                RatingFragment alertDialog = RatingFragment.instance(BaseActivity.this, Id.get(item), (ratingValue, comments) -> {
                    CXLog.d(TAG, "select the rating::" + ratingValue);
                    CXLog.d(TAG, "comment the feednback  " + comments);
                    item--;
                    showRatingBarAlertDialog(requestId);
                });
                alertDialog.show(CXBaseActivity.this.getFragmentManager(), "alertDialog");
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2013-08-09
          • 2011-12-23
          • 2017-07-20
          • 2020-06-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-20
          • 1970-01-01
          相关资源
          最近更新 更多