当我将设备转换为横向时,我希望隐藏我的标题栏。我已经看到了用于隐藏标题栏的XML选项,以及以下以编程方式执行此操作的示例:
//Remove title bar
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
//Remove notification bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
但是,我正在使用configChanges
和orientation
的{{1}}参数,所以我的活动在面向横向时不再重新创建(我正在为某些人做这个原因)。所以我不能使用上述方法,因为这些调用需要在screenSize
之前进行。
那么任何想法?谢谢。
答案 0 :(得分:13)
正在寻找答案,最后来到这里,将各个部分放在一起,这里是:
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
else {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
答案 1 :(得分:7)
假设您已为清单中的configChanges
定义Activity
,那么您可以实现覆盖onConfigurationChanged
方法的问题:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
getActionBar().hide();
} else {
getActionBar().show();
}
}
如果使用支持库,则必须使用getSupportActionBar()
而不是getActionBar()
。
答案 2 :(得分:3)
首先使用以下代码检查您的设备方向
当前配置,用于确定要检索的资源等,可从资源的配置对象中获取:
getResources().getConfiguration().orientation
然后执行与隐藏标题栏和通知栏相关的必要编码。
答案 3 :(得分:0)
@Override
public void onConfigurationChanged(Configuration config) {
super.onConfigurationChanged(config);
if(config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getActionBar().hide();
} else {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getActionBar().show();
}
}
你可以使用我自己试过的。
答案 4 :(得分:-1)
在您的" AndroidManifest.xml"中,您可以在活动代码中指定" NoTitleBar"在主题属性中,它将始终隐藏标题:
<activity
android:name="com.my_package.MyActivity"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:configChanges="navigation|orientation|screenLayout|layoutDirection">