android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 适用于应用程序级别,但不适用于活动级别。有啥线索吗?
Posted
技术标签:
【中文标题】android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 适用于应用程序级别,但不适用于活动级别。有啥线索吗?【英文标题】:android:theme="@android:style/Theme.NoTitleBar.Fullscreen" works on Application level but not at the activity level. Any clue?android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 适用于应用程序级别,但不适用于活动级别。有什么线索吗? 【发布时间】:2012-04-22 14:28:20 【问题描述】:我需要将我的一个名为 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);
这样做只是隐藏了标题栏而不是状态栏。
此外,如果我在应用程序级别使用清单主题而不是我的活动,它可以工作,但适用于我的应用程序的所有活动,这不是我想要的。我只想要一个特定活动的无状态栏。
我们将不胜感激。谢谢!
P.S:我很好,这种行为在 Honeycomb/ICS 中不再可用。我只需要这个 2.2 和 2.3
编辑
尝试了 SO 中其他解决方案中提到的所有建议,但尚未成功。主题在应用于应用程序级别但不适用于活动级别时有效。
我正在使用 HTC WildFire-S,android 版本 2.3.5
【问题讨论】:
【参考方案1】:在您的清单 xml 中,在应用程序级别放置:
<application
...
android:theme="@android:style/Theme.NoTitleBar" >
</application>
在你想要全屏显示的活动中放这个:
<activity
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
...
</activity>
移除 onCreate 中的所有 setWindowsFeature 或 setFlag 方法。
【讨论】:
我相信是的。我曾经在 android 2.2 上测试过这个【参考方案2】:我认为您只需将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% 确定需要的任何内容,以这种方式进行测试
【讨论】:
不起作用。只有标题熄灭,但状态栏仍然存在。我正在使用 HTC WildFire-S,android 版本 2.3.5 事实上,活动的顶部似乎在状态栏下方。状态栏似乎有某种高 z-index 并隐藏了我的全屏活动的一部分! 您确定您的项目中没有其他xml主题声明吗? 您是否也检查了各个布局文件? (位于 res/layout 中的那些)【参考方案3】:我把它放在我的活动中:
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_splash);
在我的清单中我没有修改,这是我的,没有修改:
android:theme="@style/AppTheme"
在我的活动 xml 中:
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
【讨论】:
【参考方案4】:这样就可以了:
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);
【讨论】:
【参考方案5】:这将解决您的问题
只需在你的清单中更改 @android:style... 为 @style/..
<application
...
android:theme="@style/Theme.AppCompat.NoActionBar">
...
</application>
【讨论】:
以上是关于android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 适用于应用程序级别,但不适用于活动级别。有啥线索吗?的主要内容,如果未能解决你的问题,请参考以下文章
android :framework层自定义theme无法取得
Android Theme主题继承(SDK下主题和v7包下主题)
Android - 错误:"No resource found that matches the given name android:Theme.Material"