AppCompatActivity 上的对话框没有标题。为什么?

Dialog on AppCompatActivity has no title. Why?

我正在使用 API 27 进行编译,并在 AppCompatActivity 上显示一个具有以下主题的对话框:

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

完整应用程序的主题是这样的:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

我正在使用以下代码显示对话框:

final Dialog dialog = new Dialog(mContext);
dialog.setTitle("Valorar " + APP_TITLE);
dialog.setContentView(sv);        
dialog.show(); 

问题是显示的对话框没有标题,我不明白为什么。

我的 Activity 主题或对话框创建逻辑有问题吗?

我遇到过同样的问题,你是对的。警告对话框在 NoActionBar activity 中不显示标题栏,我不得不在我的 NoActionBar 主题中专门定义一个 alertDialogTheme

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="alertDialogTheme">@style/<your dialog theme></item>
</style>

您可以直接在上面使用 Theme.AppCompat.Light.Dialog.Alert(或类似的),或者用它定义您自己的 parent

我建议使用 AlertDialog 而不是普通的 Dialog。如果您使用 AlertDialog 的支持库版本,您还将在较旧的 API 关卡上获得 material 设计(而不是 Holo)。

这也将解决您的 activity 主题破坏对话框标题的问题。

对你来说,改变很简单:

new AlertDialog.Builder(mContext)
        .setTitle("Valorar " + APP_TITLE)
        .setView(sv)
        .show();
 <item name="windowNoTitle">true</item>

这将禁用标题,将其设置为false ..

 <item name="windowNoTitle">false</item>

来自您的 Activity 主题

你可以尝试编程 :-

   final Dialog dialog = new Dialog(mContext);
   Window window = dialog.getWindow();
    if (window != null) {
        window.requestFeature(Window.FEATURE_NO_TITLE);
    }