Android软键盘启动时隐藏导航栏

时间:2016-07-29 13:42:21

标签: android android-layout android-softkeyboard

当我从活动中的编辑文本启动键盘时,我试图隐藏导航栏。我已经尝试了很多解决方案,但是没有多少运气。

我在这个论坛中找到了以下代码,但在键盘启动时它并没有消除导航栏。

private void setupMainWindowDisplayMode()
{
    View decorView = setSystemUiVisilityMode();
    decorView.setOnSystemUiVisibilityChangeListener(
            new View.OnSystemUiVisibilityChangeListener()
            {
                @Override
                public void onSystemUiVisibilityChange(int visibility)
                {
                    setSystemUiVisilityMode(); // Needed to avoid exiting immersive_sticky when keyboard is displayed
                }
            });
}

private View setSystemUiVisilityMode()
{
    View decorView = getWindow().getDecorView();
    int options;
    options = 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_STICKY | View.SYSTEM_UI_FLAG_IMMERSIVE |
            View.SYSTEM_UI_LAYOUT_FLAGS;

    decorView.setSystemUiVisibility(options);
    return decorView;
}

任何建议都将不胜感激

1 个答案:

答案 0 :(得分:0)

你可能已经知道了,但只是为了确保它。

您可以使用以下代码检查键盘是否可见:

InputMethodManager imm = (InputMethodManager) getActivity()
        .getSystemService(Context.INPUT_METHOD_SERVICE);

if (imm.isAcceptingText()) {
    // keyboard is shown
} else {
    // keyboard is not shown
}

然后您可以隐藏或显示导航栏。

https://developer.android.com/training/system-ui/navigation.html#40

在上面的API中,它说

With this approach, touching anywhere on the screen causes the navigation
bar (and status bar) to reappear and remain visible. The user
interaction causes the flags to be be cleared.

看起来这可能是一个问题。我想检查一下是否有效,但我可以使用软键获得一个设备。希望这会有所帮助。