我在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...
,在多个地方,在计时器等处进行。这段代码肯定已经达到,但它根本没有做任何事情。
答案 0 :(得分:6)
setSystemUiVisibility()仅在您调用它的视图可见时生效!
更多:您调用setSystemUiVisibility()的视图必须保持可见,导航栏才能保持隐藏状态。感谢您记录这些人,非常棒。
以下是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;
}
}
}