【问题标题】:Title showing 2 times in AlertDialog标题在 AlertDialog 中显示 2 次
【发布时间】:2018-01-09 08:11:45
【问题描述】:

我正在尝试在 android 中显示一个 AlertDialog。问题是对话框的标题出现了 2 次。我希望它只显示一个标题?我该怎么做?

这就是对话框的样子

这就是我显示对话框的方式

   AlertDialog alertDialog = new AlertDialog.Builder(this, android.R.style.Theme_Material_Dialog).create();
                    alertDialog.setTitle(R.string.ttl_alrt_dlg_dont_asked_again);
                    alertDialog.setMessage("AI bifat nu ma mai intreba asa ca mergi in setari");
                    alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int which) {
                                    dialog.dismiss();


                                    actv.finish();
                                    //ActivityCompat.requestPermissions(actv,
                                      //      new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                                        //    MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
                                }
                            });
                    alertDialog.show();

【问题讨论】:

  • 这种情况会发生在具有不同操作系统的各种设备上吗?
  • 我认为是因为这种风格android.R.style.Theme_Material_Dialog

标签: android android-alertdialog


【解决方案1】:

试试这个:

AlertDialog alertDialog = new AlertDialog.Builder(this)
            .setTitle("title")
            .setMessage("AI bifat nu ma mai intreba asa ca mergi in setari")
            .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    dialog.dismiss();
                    actv.finish();
                }
            })
            .create();
    alertDialog.show();

【讨论】:

  • 您的代码应该可以正常工作。但因为它显示重复的两件事可能会搞砸。一个是你的主题。另一个是您在创建对话框后设置标题。所以,你可以试试这个。
【解决方案2】:

它看起来像是由于android.R.style.Theme_Material_Dialog,第一个标题是ActionBar

解决方案

1. 不用样式就行。无论如何它都会显示在材料设计外观中。

2.或者你可以使用android.R.style.Theme_Material_Dialog_NoActionBar

  AlertDialog alertDialog = new AlertDialog.Builder(this, android.R.style.Theme_Material_Dialog_NoActionBar).create();
  alertDialog.setTitle(R.string.ttl_alrt_dlg_dont_asked_again);
  alertDialog.setMessage("AI bifat nu ma mai intreba asa ca mergi in setari");
  alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                }
            });
    alertDialog.show();

【讨论】:

  • @Sayem 的回答也不错。但我检查了这个作为正确答案,因为它保留了材料外观。
【解决方案3】:

删除这一行-:

alertDialog.setTitle(R.string.ttl_alrt_dlg_dont_asked_again);

【讨论】:

  • 那么“需要权限”文本会从哪里出现?
  • @ShivamOberoi 它的 setTitle 不是 addTitle。所以删除它是行不通的
【解决方案4】:

这是 Theme_Material_Dialog 问题。所以你必须通过创建样式来定制你自己的对话框。

看到这个有用的答案here

这个完整的答案another_here

【讨论】:

    【解决方案5】:

    在使用 AppCompatDialogFragment 时遇到了类似的问题。最终使用如下以避免,标题出现两次:

    <style name="dialogfrag_title" parent="Theme.MaterialComponents.Light.Dialog">
        <item name="android:windowNoTitle">true</item>
        <item name="android:padding">@dimen/lyt_margin</item>
        <item name="android:windowBackground">@color/appBackground</item>
    </style>
    

    以及片段类中的以下行。

            getDialog().setTitle("About "+ user.name());
    

    【讨论】:

      猜你喜欢
      • 2020-10-25
      • 2021-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-29
      • 2020-08-08
      • 2012-12-15
      相关资源
      最近更新 更多