如何隐藏android软键

时间:2017-07-20 10:56:46

标签: android android-softkeyboard softkeys

在我的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显示时,软键会再次显示。 我想在任何消息框或烤面包显示时隐藏软键。

有可能......我怎么能这样做。

1 个答案:

答案 0 :(得分:1)

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

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

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中使用此代码,因为在创建活动时也可以获得窗口焦点。