android - SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 无效

标签 android layout fullscreen

<分区>

我在 VideoView 中使用这段代码来尝试隐藏运行 Android (CyanogenMod) 4.1 的触摸板上的导航栏。

    setSystemUiVisibility(SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            | SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | SYSTEM_UI_FLAG_FULLSCREEN
            | SYSTEM_UI_FLAG_HIDE_NAVIGATION);

不幸的是,它根本没有效果,也没有报错。我不知道要寻找什么(我很欣赏“它不起作用”不是很有帮助,但我的印象是这是您需要使用的唯一代码行,并且因为有没有错误...)

我已经尝试了各种变体 - getWindow().getDecorView().setSystemUiVi...,在多个地方、在计时器上等等。那行代码确实达到了,但是它根本不做任何事情。

最佳答案

哦,太可笑了。阅读源代码后——这通常是在 Android 领域找到答案的唯一途径——我发现了以下未记录的事实:

setSystemUiVisibility() 仅当您调用它的 View 可见时才有效!

甚至更多:您调用 setSystemUiVisibility() 的 View 必须保持可见,导航栏才能保持隐藏状态。感谢记录这些人,真的很棒。

这里是相关代码,在View.java .

void performCollectViewAttributes(AttachInfo attachInfo, int visibility) {
    if ((visibility & VISIBILITY_MASK) == VISIBLE) {
        if ((mViewFlags & KEEP_SCREEN_ON) == KEEP_SCREEN_ON) {
            attachInfo.mKeepScreenOn = true;
        }
        attachInfo.mSystemUiVisibility |= mSystemUiVisibility;
        ListenerInfo li = mListenerInfo;
        if (li != null && li.mOnSystemUiVisibilityChangeListener != null) {
            attachInfo.mHasSystemUiListeners = true;
        }
    }
}

关于android - SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13887278/

相关文章:

android - 提供网站以在 Android 平板电脑上离线查看的最佳方式

android - 使用ActionBarSherlock库报错 "R class can not be resolved"

android - 让 LayoutParams.WRAP_CONTENT 忽略大背景图像

html - 需要有关 HTML 页面布局的帮助

javascript - 全屏功能无法正常工作

javascript - 全屏 API 和外部链接

android - 任何人都可以帮助我在 android 中使用 ocr 名片扫描仪吗?

java - 使用base64在android中上传图像并发送参数

java - 旋转重力

java - 具有指定分辨率的独立于平台的全屏 JFrame?