我正在尝试隐藏/最小化Android 4.0.3中的系统栏。目前我正在做
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
在我活动的onCreate
事件中。一旦用户触摸屏幕,该栏将再次出现。根据其他STO线程,这种行为无法避免。
我的想法是在我的视图上捕捉任何触摸事件,并在显示后立即重新隐藏该栏。在单击处理程序中运行上面显示的代码无效。
如何实现(几乎)隐藏的栏?
答案 0 :(得分:1)
我不会谈论'为什么',只谈'怎么': - )
所以,关于
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
这不会影响使用系统栏而非单独导航的平板电脑设备 和状态栏。
在平板电脑上,您可以尝试(API Level 14以后)
myView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
为了检测这个事件,我想你可以用它来捕捉这个事件:
myView.setOnSystemUiVisibilityChangeListener(
new OnSystemUiVisibilityChangeListener()
{
public void onSystemUiVisibilityChange(int visibility)
{
if (visibility == View.SYSTEM_UI_FLAG_VISIBLE) {
// TODO whatever you want
}
else {
// TODO what to do in the other case
}
}
}
);
更一般地说,这是“专业Android 4应用程序开发”的其他建议
通常很好的做法是同步你的其他变化 具有导航可见性更改的UI。例如,您可以选择 隐藏和显示操作栏和其他导航控件 基于进入和退出“全屏模式”。你可以这样做 在视图中注册OnSystemUiVisibilityChangeListener - 通常,您用来控制导航可见性的视图
答案 1 :(得分:0)
你不能隐藏它,但你可以简单地禁用它,除了家。试试this link.。使用SYSTEM_UI_FLAG_LOW_PROFILE可以调暗系统栏,使用onWindowFocusChanged()
可以获得焦点并将其折叠。