16

我需要将我的一项活动称为MyNoStatusBarActivity.java全屏活动。

我在清单中添加了:

<activity
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
    android:name=".MyNoStatusBarActivity"
    android:noHistory="true"
    android:label="@string/app_name"
    android:configChanges="touchscreen|keyboard|keyboardHidden|navigation|orientation">
    ...
</activity>

onCreate我的活动中:

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_NO_TITLE);

    getWindow().setFlags(
        WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

这样做只是隐藏了 TITLE 栏而不是 STATUS 栏。

此外,如果我在应用程序级别使用清单主题而不是我的活动,它可以工作,但适用于我的应用程序的所有活动,这不是我想要的。我只想要一项特定活动的无状态栏。

帮助将不胜感激。谢谢!

PS:我很好,这种行为在 Honeycomb/ICS 中不再可用。我只需要 2.2 和 2.3

编辑

尝试了 SO 中其他解决方案中提到的所有建议,但尚未成功。主题在应用于应用程序级别但不适用于活动级别时有效。

我正在使用 HTC WildFire-S,安卓版本 2.3.5

4

5 回答 5

29

在您的清单 xml 中,在应用程序级别放置以下内容:

<application
    ...
    android:theme="@android:style/Theme.NoTitleBar" >
</application>

并在您要全屏显示的活动中输入:

<activity

     android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
     ...
</activity>

删除 onCreate 中的所有 setWindowsFeature 或 setFlag 方法。

于 2013-04-26T15:48:55.920 回答
6

我认为您只需要android:theme="@android:style/Theme.NoTitleBar.Fullscreen退出 mainfest,坚持只调用代码,它总是对我有用。您使用的是哪种测试设备?

还要确保这些电话是你打电话之前来setContentView(R.layout.xxx)

    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.xxx);

检查所有代码的android:theme声明,即清单和单独的布局 xml 文件。听起来好像在应用程序级别声明它是有效的(因为它会覆盖任何后续主题声明)但是有些东西会覆盖您的活动级别请求。

尝试在整个项目中搜索“android:theme”并删除您不是 100% 确定需要的任何内容,以这种方式进行测试

于 2012-04-10T09:55:58.060 回答
3

我把它放在我的活动中:

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

在我的清单中我没有修改,这是我的,没有修改:

android:theme="@style/AppTheme"

在我的活动 xml 中:

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
于 2013-09-04T07:12:11.197 回答
1

这可以解决问题:

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_NO_TITLE);

    getWindow().setFlags(
        WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.activity_main);
}
于 2016-07-11T09:57:19.400 回答
1

这将解决您的问题

只需更改您的清单 @android:style... 为 @style/..

<application
    ...
    android:theme="@style/Theme.AppCompat.NoActionBar">
    ...
</application>
于 2017-10-10T21:32:05.627 回答