【问题标题】:AppCompatActivity as a dialog without titleAppCompatActivity 作为没有标题的对话框
【发布时间】:2015-07-22 22:09:26
【问题描述】:

我有一个从AppCompactActivity 继承的Activity。在活动集主题的清单中:

<style name="Theme.custom" parent="Theme.AppCompat.Light.Dialog">
    <item name="android:windowNoTitle">true</item>
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/accent</item>
    <item name="colorButtonNormal">@color/accent</item>
    <item name="android:buttonStyle">@style/ButtonStyle</item>
</style>

当我运行活动时,它显示为一个对话框,但显示了标题!我尝试supportRequestWindowFeature(Window.FEATURE_NO_TITLE)RequestWindowFeature(Window.FEATURE_NO_TITLE),但标题仍然显示。请告诉我,有什么问题?


编辑

我解决了,只是把android:windowNoTitle改成windowNoTitle!因为我正在使用 AppCompactActvity!

【问题讨论】:

  • 这也发生在我身上。即使我将工具栏添加为操作栏,它仍然存在。对我来说似乎是某种错误。可以将标题字符串设置为空字符串,但它仍然存在,所以会影响居中。
  • 将您的编辑添加为答案并接受它,我在编辑中几乎错过了这个:)
  • supportRequestWindowFeature(Window.FEATURE_NO_TITLE) 为我工作。当这是活动的 onCreate() 方法中的第一个声明时
  • @Harsh 我认为你的答案是正确的解决方案。

标签: android dialog android-appcompat


【解决方案1】:

如果您使用的是AppCompatActivity,那么以下内容将不起作用

requestWindowFeature(Window.FEATURE_NO_TITLE);

简单的方法是在style.xml文件中设置。

<style name="mytheme" parent="Theme.AppCompat.Light.Dialog">
    <item name="windowNoTitle">true</item>
</style>

name="windowNoTitle",不是name="android:windowNoTitle"

如果您想以编程方式将其删除,请在 onCreate() 中添加以下内容

getSupportActionBar().hide();

【讨论】:

  • 小心,是“windowNoTitle”而不是“android:windowNoTitle”
  • 谢谢兄弟
【解决方案2】:

AppCompatActivity 与 Activity 不同,有自己的特点。出于同样的目的,您可以简单地使用 -

supportRequestWindowFeature(Window.FEATURE_NO_TITLE);

您可以查看文档here

注意:在setContentView() 之前添加这个以避免崩溃。

【讨论】:

    【解决方案3】:

    在您的 style.xml 中设置以下样式

    <style name="customDialogTheme" parent="Theme.AppCompat.Light.Dialog">
        <item name="windowNoTitle">true</item>
    </style>
    

    然后在你的活动中设置这个主题

    <activity
        android:name=".yourDailogActivity"
        android:configChanges="orientation"
        **android:theme="@style/customDialogTheme"**
        android:screenOrientation="portrait" />
    

    【讨论】:

      【解决方案4】:

      不应在活动标题上保留任何内容。如果遵循这些步骤活动标题将被隐藏。

      style.xml:

          </style>
              <style name="MyTitledActivityDialogTheme" parent="Theme.AppCompat.Light.Dialog">
              <item name="android:windowNoTitle">true</item>
              <item name="windowActionBar">false</item>
          </style>
      

      ma​​nifyt.xml:

       <activity
                  android:name="YouActivity" 
                  android:theme="@style/MyTitledActivityDialogTheme" />
      

      YourClass.java:

      setContentView(R.layout.xyz)之后像这样

        setContentView(R.layout.xyz);
        if (getSupportActionBar() != null)
            getSupportActionBar().hide();
      

      【讨论】:

        【解决方案5】:

        请使用setContentView()之前的请求窗口功能,如下所示

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.main);
        

        【讨论】:

          【解决方案6】:

          不应保留超过&lt;string name="app_name"&gt;&lt;/string&gt;.so 当您运行您的活动时,它将显示带有“NO Title”的对话框。

          字符串.xml:

                   <resources>
                         <string name="app_name"></string>
                         <string name="hello_world">Hello world!</string>
                         <string name="action_settings">Settings</string>
                  </resources>
          

          【讨论】:

          • Afaik 默认标题是活动的标签(通常是指 app_name),但仅使用空字符串作为活动标签并不是一个好的解决方案。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-11
          • 2015-08-25
          • 2011-07-21
          • 2017-04-03
          • 2011-02-08
          • 2018-04-27
          相关资源
          最近更新 更多