如何完全隐藏android导航栏

时间:2014-02-12 22:17:16

标签: android hide uinavigationbar

我正试图隐藏这样的安卓导航栏:

@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public void hideNavBarsParent(){
    mDecorView = getWindow().getDecorView();
    mDecorView.setOnSystemUiVisibilityChangeListener(
            new View.OnSystemUiVisibilityChangeListener() {
                @Override
                public void onSystemUiVisibilityChange(int flags) {
                   hideNavBars();
                }
            });
}

我在那里调用hideNavBars(),实现是 -

@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public void hideNavBars(){
    if(UrlWorker.isJelleyBean()) {
        mDecorView = getWindow().getDecorView();
        int uiOptions = 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_LOW_PROFILE;
        mDecorView.setSystemUiVisibility(uiOptions);

但是一旦我点击任何地方再次出现,所以我的问题是 - 所以没有办法在android中隐藏em< Kitkat并没有使用Immersion Mode?

然后我尝试了一下这个

@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public void hideNavBarsParent(){
    mDecorView = getWindow().getDecorView();
    mDecorView.setOnSystemUiVisibilityChangeListener
        (new View.OnSystemUiVisibilityChangeListener() {
    @Override
    public void onSystemUiVisibilityChange(int visibility) {
        // Note that system bars will only be "visible" if none of the
        // LOW_PROFILE, HIDE_NAVIGATION, or FULLSCREEN flags are set.
        if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
            hideNavBars();
        } else {
        }
    }

}); 因此,当它们可见时,它们必须隐藏起来,但是......

2 个答案:

答案 0 :(得分:0)

将其粘贴到onCreate()方法中:

requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                            WindowManager.LayoutParams.FLAG_FULLSCREEN);

答案 1 :(得分:0)

使用View.SYSTEM_UI_FLAG_HIDE_NAVIGATION将隐藏导航栏并设置一个不可见的窗口,阻止您的应用接收所有触摸事件。下一个触摸事件将“破坏玻璃”并恢复导航栏。在4.4之前无法改变这种行为。

在4.4中使用沉浸式模式允许您通过一些额外的标志请求稍微改变这种行为,允许没有导航栏的交互式应用程序。但是导航栏总是可以通过从屏幕底部滑动来恢复,系统可以随时恢复栏。