小编ITJ*_*ott的帖子

如何防止导航栏留下黑条?(沉浸模式)

使用沉浸模式的应用在等待一段时间后返回时(活动被销毁)会在屏幕底部留下一个黑条。

发生了什么:(我启用了开发人员选项:“不要保留活动”来重现此内容)。

  1. 首次启动应用程序。沉浸模式按预期工作。

  2. 向上滑动以显示“沉浸式粘性”导航栏,然后使用“主页”按钮离开应用程序。在应用程序关闭之前,导航栏的背景会短暂显示黑色背景。

  3. 使用“最近”按钮,然后选择应用程序以恢复它。

  4. 该应用程序打开以在黑色条上简要显示导航条。系统 ui 折叠为沉浸模式,但黑条仍然存在。 systemuiblackbar

此错误也仅出现在 Lollipop 上,而不出现在 KitKat 上。

我已经剥离了应用程序,只启动一个虚拟活动,除了设置系统 UI 标志外没有任何功能:

public class DummyActivity extends FragmentActivity {

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        setSystemUiVisibility();
    }
}

public void setSystemUiVisibility() {
    if (getWindow() != null && getWindow().getDecorView() != null) {
        getWindow().getDecorView().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_STICKY);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:在创建一个只有这个活动的新项目后,我看到这个问题在使用扩展“android:Theme.Holo”的应用程序主题时重现,并在我扩展 Material 主题时修复了这个示例项目中的问题:

改变

<style name="AppTheme" parent="android:Theme.Holo.Light.NoActionBar.Fullscreen">
</style>
Run Code Online (Sandbox Code Playgroud)

<style name="AppTheme"parent="android:Theme.Material.Light.NoActionBar.Fullscreen">
</style>
Run Code Online (Sandbox Code Playgroud)

不幸的是,此修复程序并未解决我的主要项目中的问题,但它使我更接近解决方案,并且可能会帮助其他人解决相同的问题。

android android-activity

7
推荐指数
1
解决办法
1821
查看次数

标签 统计

android ×1

android-activity ×1