在写界面的时候 然后发现在界面最底下的几行文字 正好被虚拟导航栏遮挡住了,不滑动还看不到底下的文字,所以想隐去这些导航栏。
采用下面的代码将DecorView中的属性设置为隐藏 navigation,我这里注销掉了全屏的属性 ,按需添加or删除属性吧

 11 && Build.VERSION.SDK_INT < 19) { // lower api
            View v = this.getWindow().getDecorView();
            if(v!=null){
                v.setSystemUiVisibility(View.GONE);
            }
        } else if (Build.VERSION.SDK_INT >= 19) {
            //for new api versions.
            View decorView = getWindow().getDecorView();
            int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY/* | View.SYSTEM_UI_FLAG_FULLSCREEN*/;
            if (decorView != null) {
                decorView.setSystemUiVisibility(uiOptions);
            }

        }
    }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
" data-snippet-id="ext.c635ae4a92490f41cf801e12d12759e7" data-snippet-saved="false" data-codota-status="done">`  &lt;span class="hljs-keyword">protected&lt;/span> &lt;span class="hljs-keyword">void&lt;/span> &lt;span class="hljs-title">hideBottomMenu&lt;/span>() {
        &lt;span class="hljs-comment">//隐藏虚拟按键&lt;/span>
        &lt;span class="hljs-keyword">if&lt;/span> (Build.VERSION.SDK_INT &gt; &lt;span class="hljs-number">11&lt;/span> && Build.VERSION.SDK_INT &lt; &lt;span class="hljs-number">19&lt;/span>) { &lt;span class="hljs-comment">// lower api&lt;/span>
            View v = &lt;span class="hljs-keyword">this&lt;/span>.getWindow().getDecorView();
            &lt;span class="hljs-keyword">if&lt;/span>(v!=&lt;span class="hljs-keyword">null&lt;/span>){
                v.setSystemUiVisibility(View.GONE);
            }
        } &lt;span class="hljs-keyword">else&lt;/span> &lt;span class="hljs-keyword">if&lt;/span> (Build.VERSION.SDK_INT &gt;= &lt;span class="hljs-number">19&lt;/span>) {
            &lt;span class="hljs-comment">//for new api versions.&lt;/span>
            View decorView = getWindow().getDecorView();
            &lt;span class="hljs-keyword">int&lt;/span> uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY&lt;span class="hljs-comment">/* | View.SYSTEM_UI_FLAG_FULLSCREEN*/&lt;/span>;
            &lt;span class="hljs-keyword">if&lt;/span> (decorView != &lt;span class="hljs-keyword">null&lt;/span>) {
                decorView.setSystemUiVisibility(uiOptions);
            }

        }
    }`

 

我们业务逻辑只要window获取焦点就执行

@Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (hasFocus) { mDecorView.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); } }