隐藏标题栏/通知栏时,设备是面向景观(Hiding title bar / notification

2019-06-26 21:11发布

我想,当我把我的设备景观被隐藏我的标题栏。 我已经看到了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的参数orientationscreenSize ,因此不重新创建我的活动时再次定向景观(我这样做是因为某些原因)。 因此,作为这些调用前需要进行我不能用上述方法setContentView()

所以任何想法? 谢谢。

Answer 1:

为寻找答案,在这里结束了,把碎片一起,在这里,他们是:

if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
  getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
else {
  getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}


Answer 2:

假设您已经定义configChangesActivity清单中,然后就可以实现您的问题压倒一切onConfigurationChanged方法:

@Override
public void onConfigurationChanged(Configuration newConfig) {
     super.onConfigurationChanged(newConfig);
     if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
          getActionBar().hide();
     } else {
          getActionBar().show();
     }
}

你将不得不使用getSupportActionBar()代替getActionBar()如果使用的是支持库。



Answer 3:

首先使用下面的代码检查设备方向

当前配置,如用于确定要检索的资源等,如可从资源配置对象:

getResources().getConfiguration().orientation

然后做隐藏标题栏和通知栏相关的必要的编码。



Answer 4:

在你的“AndroidManifest.xml中”,在活动标签,你可以在主题属性指定“NoTitleBar”,这样它总是隐藏标题:

<activity
    android:name="com.my_package.MyActivity" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
    android:configChanges="navigation|orientation|screenLayout|layoutDirection">


文章来源: Hiding title bar / notification bar when device is oriented to landscape