软键盘隐藏后隐藏在屏幕上的主页和后退按钮

时间:2014-12-24 13:37:25

标签: android android-softkeyboard

我可以隐藏在屏幕上主页和后退按钮:

@Override protected void onCreate(Bundle savedInstanceState)
    {
        this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        this.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
                | View.SYSTEM_UI_FLAG_FULLSCREEN
                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);)
    }

与onResume相同。但是当我的应用程序打开软键盘时,按钮再次出现,并且在键盘关闭后不会消失。隐藏软键盘后,我希望隐藏式按钮和后退按钮不可见。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

可能你可以使用解决方案解决方案,你可以听取软键盘解雇,然后当解雇时尝试再次设置这些标志。

要听取键盘解除(got it from here)然后再次设置标志,那么完整的解决方案将是:

final View activityRootView = findViewById(R.id.activityRoot);
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        int heightDiff = activityRootView.getRootView().getHeight() - activityRootView.getHeight();
        if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard...
                this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
                this.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
                    | View.SYSTEM_UI_FLAG_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);)
        }
     }
});