android:theme =“@ android:style / Theme.NoTitleBar.Fullscreen”适用于应用程序级别,但不适用于活动级别。任何线索?

时间:2012-04-10 09:42:40

标签: android android-activity android-manifest statusbar android-theme

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

我在Manifest中添加了:

<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栏。

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

非常感谢帮助。日Thnx!

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

修改

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

我正在使用HTC WildFire-S,android ver 2.3.5

5 个答案:

答案 0 :(得分:29)

在你的清单xml中,在应用程序级别放置:

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

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

<activity

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

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

答案 1 :(得分:6)

我认为你只需要将android:theme="@android:style/Theme.NoTitleBar.Fullscreen从主要节日中取出来,坚持使用代码只调用它,它总是对我有用。您使用的是哪种测试设备?

还要确保在之前这些来电

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); 声明的所有代码,即清单和单个布局xml文件。因为它听起来像在应用程序级别声明它正在工作(因为它覆盖任何后续主题声明)但是有一些事情覆盖了您的活动级别请求。

尝试在整个项目中搜索“android:theme”并删除任何你不是100%确定需要的东西,然后按照这种方式进行测试

答案 2 :(得分:3)

我把它放在我的活动中:

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

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

android:theme="@style/AppTheme"

在我的activty xml中:

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

答案 3 :(得分: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);
}

答案 4 :(得分:0)

这将解决您的问题

只需更改你的清单@android:style ... for @style /..

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