如何仅在软键盘打开时使导航栏可见?

问题描述

我有一个应用程序,大部分时间应该是全屏的。但是,我希望用户在使用键盘时能够轻松返回。如何使导航栏仅在键盘打开时可见?当键盘关闭时,导航栏应该会再次消失。

解决方法

我将此库添加到我的项目中。所以我可以输入键盘打开时要做什么:

implementation 'com.github.ravindu1024:android-keyboardlistener:1.0.0'

然后我创建了两个值,一个用于显示,一个用于隐藏:

private int showSystemBars() {
    return SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN  |
            SYSTEM_UI_FLAG_LAYOUT_STABLE;
}

private int hideSystemBars() {
    return SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
}

然后我使用了我添加的库:

KeyboardUtils.addKeyboardToggleListener(this,isVisible -> {
        if (isVisible) {
            Toast.makeText(context,"Visible",Toast.LENGTH_SHORT).show();
            getWindow().getDecorView().setSystemUiVisibility(showSystemBars());
        }else {
            Toast.makeText(context,"Invisible",Toast.LENGTH_SHORT).show();
            getWindow().getDecorView().setSystemUiVisibility(hideSystemBars());
        }
    });

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...