我有一个活动,其主题设置如下:
android:theme="@android:style/Theme.Dialog"
然而,在活动对话框中出现了一个标题栏,占用了我所拥有的很少的可用空间。我该如何去掉它?
onCreate
中调用requestWindowFeature(Window.FEATURE_NO_TITLE);
。它需要在调用super.onCreate
之后立即完成,而且要在调用setContentView
之前完成。Caused by: android.util.AndroidRuntimeException: You cannot combine custom titles with other title features
的异常,但也许是我做错了其他事情。 - EleniAppCompactActivity
中不起作用。您应该添加@zackygaurav的答案,以便使用AppCompatActivity
的用户可以获得正确的信息。 - Moinkhan对于使用AppCompatActivity
的人,上述答案可能无法起作用。
尝试这个
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
在setContentView(R.layout.MyDialogActivity);
之前立即执行。
<item name="windowNoTitle">true</item>
添加到您的样式中,即无需使用android前缀。 - RehanConstraintLayout
,否则您的活动将无法显示在屏幕上。 - Van<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>
AppCompatActivity
时,无需添加android
前缀,即可将<item name="windowNoTitle">true</item>
添加到你的样式中。请注意保持原意,使内容更加通俗易懂。 - Rehan如果你在使用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"
。这个方法对我有效。
我成功地禁用了标题。
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>
如果您正在使用AppCompatActivity,则requestWindowFeature(Window.FEATURE_NO_TITLE)无效。
为此,您可以在values/style.xml中创建自定义主题,如下所示:
<style name="NoTitleDialog" parent="Theme.AppCompat.Dialog.Alert">
<item name="windowNoTitle">true</item>
</style>
<activity android:name=".activity.YourActivity"
android:theme="@style/NoTitleDialog"/>
或者您可以使用 getSupportActionBar().hide() 来编程隐藏操作栏。
<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>
我尝试使用requestWindowFeature(Window.FEATURE_NO_TITLE);但对我无效,如果你和我一样,请按照以下步骤操作: 首先,在res/values/styles.xml中添加以下代码:
<style name="NoTitleDialog" parent="Theme.AppCompat.Dialog">
<item name="android:windowNoTitle">true</item></style>
Dialog dialog = new Dialog(this, R.style.NoTitleDialog);
这很简单
这对我有用,希望能帮到其他人:
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"/>