1

在我的 android 应用程序中,我使用以下命令隐藏软键栏:

View decorView = getWindow().getDecorView();

int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                  | View.SYSTEM_UI_FLAG_FULLSCREEN
                  | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                  | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;

decorView.setSystemUiVisibility(uiOptions);

但问题是当某些消息框或 toast 显示然后软键再次显示时。我想在显示任何消息框或 toast 时隐藏软键。

有可能..我该怎么做。

4

1 回答 1

1

对话框、意图选择器、软键盘和 toast 等消息使用与主应用程序窗口不同的窗口。
这些额外的 Windows 可以在它们出现和消失时更改您的 SystemUiVisibility 和 Window 标志。

我发现在大多数情况下工作的是onWindowFocusChanged在 Activity 类中设置你的标志:

public void onWindowFocusChanged(boolean hasFocus) {
    if(hasFocus) {
        View decorView = getWindow().getDecorView();

        int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_FULLSCREEN
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;

        decorView.setSystemUiVisibility(uiOptions);
    }
}

然后您在 onCreate 中不再需要此代码,因为在创建活动时也会获得窗口焦点。

于 2017-07-20T11:24:41.180 回答