滑动后在Android中隐藏导航栏

时间:2016-05-20 11:17:15

标签: android android-navigation android-immersive

我正在编写一个应该以沉浸式模式运行的android应用程序。我想隐藏导航栏,为此我写了一个方法: -

public void hideSystemUI()
{

       getWindow().getDecorView().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 // hide nav bar
                    | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                    | View.SYSTEM_UI_FLAG_IMMERSIVE
    );
}

我还编写了一种方法来检测导航栏的可见性,然后在可见的情况下隐藏它。

private void systemUIListener()
{
    //listens and check if app is in immersive mode or not
    View decorView = getWindow().getDecorView();
    decorView.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) {
                        // TODO: The system bars are visible. Make any desired
                        // adjustments to your UI, such as showing the action bar or
                        // other navigational controls
                        hideSystemUI();
                    }
                }
            });
}

我在onCreate()方法中一个接一个地调用这两个方法: -

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    hideSystemUI();
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
    setContentView(R.layout.activity_main);
   // hide system ui
   systemUIListener();
}

我的问题是,该应用程序可以正常工作,也就是说,导航栏会立即隐藏,但经过几次滑动后,导航栏就不会隐藏。它将在整个过程中可见。

我也注意到,当长按主页按钮时,也会启动“speak-now google”。

我正在开发android 5.0.1版本,而我的设备是lenovo tab 2.

我的问题: -

每次刷卡时如何隐藏导航栏?还有如何防止“说话现在”在长时间回家时发布?

0 个答案:

没有答案