虚拟键盘状态



是否有某种方法可以知道虚拟键盘在运行时被用户隐藏。在标记我的重复问题之前,首先要理解我的问题,因为它看起来像是重复的,我还发现了很多与相关主题的问题。但没有找到任何答案。

我的问题是在发生某些事件时,比如方向改变,我需要知道用户是否最小化了键盘。因此,我采取相应的行动。我试着非常具体地提出问题,即使是任何解释也可以随意询问。任何帮助都将不胜感激。提前感谢我的尝试

final View activityRootView = findViewById(R.id.ll_main_root);
                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...
                            Toast.makeText(MainActivity.instance, "KeyBoarad" + value, Toast.LENGTH_LONG).show();
                        }
                     }
                });

这几乎是一个重复:如何捕获;虚拟键盘显示/隐藏";Android中的事件?

还有这个:Android EditText,软键盘显示/隐藏事件?

结论似乎是没有办法捕捉到这一点,有些人使用黑客来捕捉屏幕的大小并使用该参数。

嘿,可能已经晚了,但只是为了查询和我的建议。我也面临着同样的问题。事实上,在我的情况下,当方向改变时,我的键盘被最小化了,即使它在方向改变之前是可见的。所以我使用了android:windowSoftInputMode="stateUnchanged",这样即使在方向改变时,我的键盘仍然可见。

可能还有一个问题,你想改变可见性,这样你就可以使用toggleSoftInputFromWindow (IBinder windowToken, int showFlags, int hideFlags)了。

特别是

InputMethodManager inputMgr = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); inputMgr.toggleSoftInput(0, 0);

希望能有所帮助。

最新更新