当设备面向横向时,隐藏标题栏/通知栏

g.r*_*ion 7 java android titlebar device-orientation

当我将设备转换为横向时,我希望隐藏标题栏.我已经看到了用于隐藏标题栏的XML选项,以及以下以编程方式执行此操作的示例:

//Remove title bar
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
//Remove notification bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
Run Code Online (Sandbox Code Playgroud)

但我使用的configChanges参数orientationscreenSize,因此不重新创建我的活动时再次定向景观(我这样做是因为某些原因).所以我不能使用上面的方法,因为这些调用之前需要进行setContentView().

那么任何想法?谢谢.

dld*_*dnh 14

正在寻找答案,最后来到这里,把各个部分放在一起,他们在这里:

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


yug*_*oid 7

假设您已在清单中定义configChangesActivity,那么您可以实现您的问题覆盖onConfigurationChanged方法:

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

如果使用支持库getSupportActionBar(),getActionBar()则必须使用而不是使用.


小智 3

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

当前配置,用于确定要检索哪些资源等,可从资源的配置对象中获取,如下所示:

getResources().getConfiguration().orientation
Run Code Online (Sandbox Code Playgroud)

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