1

有没有办法知道虚拟键盘在运行时被用户隐藏。在标记我重复的问题之前,请先了解我的问题,因为它看起来很重复,而且我还发现了很多与相关主题相关的问题。但没有找到任何答案。

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

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();
                        }
                     }
                });
4

2 回答 2

1

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

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

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

于 2012-03-30T08:50:27.150 回答
1

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

并且可能还有一个您想要更改可见性的问题,以便您可以使用toggleSoftInputFromWindow (IBinder windowToken, int showFlags, int hideFlags)

具体来说

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

希望它有所帮助。

于 2012-07-23T11:58:50.133 回答