Android - 导航栏与景观叠加

时间:2015-12-03 16:54:28

标签: android overlay android-appcompat navigationbar

在我的应用程序中,我试图让导航栏覆盖活动内容。在纵向模式下,它工作正常。导航栏覆盖内容。 当我将方向更改为横向时,屏幕右侧会有导航栏。在此横向模式下,导航栏不会覆盖我的内容。 我已经实现了打开和关闭全屏模式的功能。当我在横向模式下打开全屏时,由于没有覆盖导航栏,我的活动内容跳到了左侧。 以前,我的目标是sdk版本18,它运行良好。现在我的目标是sdk版本22,我遇到了这个问题。

在我的Name中,我有以下几行:

onCreate

启用全屏模式的方法如下:

if (Build.VERSION.SDK_INT > 17) {
    window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_OVERSCAN);
} else {
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

奇怪的是,在肖像中它工作正常,但在景观中没有。有人能帮助我吗?

更新

注意:在我的布局中,我将protected void fullscreenOn() { if (mActivity != null && !mSearchModeOn) { Window window = mActivity.getWindow(); View decorView = window.getDecorView(); if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View .SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View .SYSTEM_UI_FLAG_IMMERSIVE); } else { window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN); mActionBar.hide(); } mActionBar.hide(); bottomBarsLayout.setVisibility(View.GONE); mIsFullscreenOn = true; } } 属性设置为fitsSystemWindow

更新2

我对肖像和风景使用相同的布局。此外,我注意到这种奇怪的行为仅适用于安装了Android 5(API 21)及更高版本的设备。我用KitKat在设备上进行了测试,效果很好。

1 个答案:

答案 0 :(得分:1)

我终于解决了这个问题。我在我的活动风格中添加了以下内容。

<item name="android:windowDrawsSystemBarBackgrounds" tools:ignore="NewApi">false</item>