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

时间:2018-03-28 18:03:03

标签: android dialog android-theme android-dialog appcompatactivity

我正在使用API​​ 27进行编译,并在AppCompatActivity上使用以下主题显示Dialog:

<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主题或Dialog创建逻辑做错了什么?

感谢。

3 个答案:

答案 0 :(得分:1)

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

这也可以解决你的活动的主题,破坏对话框的标题。

对你而言,改变很简单:

new AlertDialog.Builder(mContext)
        .setTitle("Valorar " + APP_TITLE)
        .setView(sv)
        .show();

答案 1 :(得分:0)

我遇到了同样的问题,你是对的。警报对话框在NoActionBar活动中不显示标题栏,我必须在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(或类似),或者将其作为父级定义您自己的

答案 2 :(得分:0)

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

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

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

来自您的活动主题

以编程方式,您可以尝试: -

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