协慌网

登录 贡献 社区

如何使用现有自定义主题隐藏 XML 活动的标题栏

我想隐藏一些活动的标题栏。问题是我将一个样式应用于我的所有活动,因此我不能简单地将主题设置为@android:style/Theme.NoTitleBar

使用NoTitleBar主题作为我的样式的父级将从我的所有活动中删除标题栏。

我可以在某处设置无标题样式项吗?

答案

onCreate()方法中执行此操作。

//Remove title bar
this.requestWindowFeature(Window.FEATURE_NO_TITLE);

//Remove notification bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

//set content view AFTER ABOVE sequence (to avoid crash)
this.setContentView(R.layout.your_layout_name_here);

this指的是Activity

您可以修改AndroidManifest.xml

<activity android:name=".MainActivity"
          android:label="@string/app_name"
          android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">

或者如果您不需要全屏活动,请使用android:theme="@android:style/Theme.Black.NoTitleBar"

注意:如果您之前使用过 “默认” 视图,则可能还应将父类从AppCompatActivity更改为Activity

我现在做了以下事情。

我声明了一种样式,从我的一般样式继承了所有内容,然后禁用了 titleBar。

<style name="generalnotitle" parent="general">
    <item name="android:windowNoTitle">true</item>
</style>

现在我可以将这个样式设置为每个 Activity,我想隐藏标题栏覆盖应用程序范围的样式并继承所有其他样式信息,因此样式代码中没有重复。

要将样式应用于特定的 Activity,请打开AndroidManifest.xml并将以下属性添加到activity标记中;

<activity
    android:theme="@style/generalnotitle">