Android活动作为对话框,但没有标题栏


72

我有一个具有以下主题设置的活动:

android:theme="@android:style/Theme.Dialog"

但是,活动对话框中会出现一个标题栏,该标题栏占用了我的少量可用空间。如何删除?


1
我不确定你是什么意思。您可以发布它的屏幕截图吗?
Lukas Knuth

Answers:


146

尝试做requestWindowFeature(Window.FEATURE_NO_TITLE);onCreate。它需要在调用后立即执行,super.onCreate并且要在之前完成setContentView


1
您是否用2.2尝试过?我遇到Caused by: android.util.AndroidRuntimeException: You cannot combine custom titles with other title features异常,但也许我做错了其他事情。
Eleni 2012年

您可能在代码中使用了另一个窗口标题功能,或者使用了对标题执行其他操作的主题。
Femi 2012年

15
这将无法工作AppCompactActivity。您应该添加@zackygaurav答案,以便使用的用户AppCompatActivity将获得正确的信息。
Moinkhan '16

@Moinkhan,那么它将如何用于“ AppCompactActivity”?
Yousuf Sohail

133

对于正在使用的用户AppCompatActivity,上述答案可能无效。

尝试这个

supportRequestWindowFeature(Window.FEATURE_NO_TITLE);

紧接之前 setContentView(R.layout.MyDialogActivity);


6
天才!谢谢!
Murphybro2'1

7
或添加<item name="windowNoTitle">true</item>您的样式,即不添加android前缀
Rehan

1
只是一件事:不要ConstraintLayout在布局的根部使用,否则您的活动将不会出现在屏幕上。

111

您可以定义自己的主题:

<style name="NoTitleDialog" parent="@android:style/Theme.Dialog">
    <item name="android:windowNoTitle">true</item>
</style>

(@Rehan的提示)如果使用的是兼容性库,则应选择一个AppCompat父主题并保留android:前缀。例如:

<style name="NoTitleDialog" parent="@style/Theme.AppCompat.Dialog">
    <item name="windowNoTitle">true</item>
</style>

4
谢谢你 这可能是一个更好的方法,但是我最终使用了requestWindowFeature。无论如何,谢谢:)
阴影

7
只需添加:不带android前缀即可使用它,AppCompatActivity即添加<item name="windowNoTitle">true</item>到您的样式中。
Rehan

我在许多资源上都找到了很好的概念,但是没有人谈论AppCompat和none-Appcompat,谢谢
Somwang Souksavatd

30

如果您AppCompatActivity被迫使用Theme.AppCompat.xxx所有内容,则可以使用以下方法删除对话框标题或操作栏styles.xml

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

请注意,使用name="windowActionBar"而不是name="android:windowActionBar"


我正在无奈地尝试使用AppCompat和在windowNoTitle声明中使用android名称空间。谢谢!
romulof '16

7

如果您使用的是AppCompatActivity,则requestWindowFeature(Window.FEATURE_NO_TITLE)无法正常工作。

为此,您可以在values / style.xml中创建自定义主题,如下所示:

   <style name="NoTitleDialog" parent="Theme.AppCompat.Dialog.Alert">
        <item name="windowNoTitle">true</item>
    </style>

请注意,项目名称:“ windowNoTitle”,而不是项目名称:“ android:windowNoTitle”

在menifest.xml中,将此自定义主题应用为

<activity android:name=".activity.YourActivity"
            android:theme="@style/NoTitleDialog"/>

或者您可以使用getSupportActionBar()。hide()以编程方式隐藏操作栏。


5

这个为我的appcompatpat工作。

<style name="DialogTheme" parent="Theme.AppCompat.Light.Dialog">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

2

这个为我工作。

我可以禁用标题

style.xml

<style name="AppDialogScreenTheme" parent="Base.Theme.MaterialComponents.Light.Dialog">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

AndroidManifest.xml

  <activity
        android:name=".MyActivity"
        android:theme="@style/AppDialogScreenTheme">

  </activity>


0

这对我有用,也可能对某人有帮助:

style.xml

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

AndroidManifest.xml

   <activity
        android:name=".DialogActivity"
        android:theme="@style/NoTitleActivityDialog"/>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.