虚拟键盘状态

时间:2012-03-30 08:46:14

标签: android android-virtual-keyboard

有没有办法知道用户在运行时隐藏虚拟键盘。 在给我标记重复的问题之前,首先要理解我的问题,因为它似乎是重复的,我也发现了很多相关主题的问题。但没有找到任何答案。

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

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

2 个答案:

答案 0 :(得分:1)

与此相关的几乎重复:How to capture the "virtual keyboard show/hide" event in Android?

和这一个:Android EditText, soft keyboard show/hide event?

结论似乎是没有办法捕获这个,有些人使用黑客攻击屏幕的大小并使用该参数。

答案 1 :(得分:1)

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

可能还有一个问题是你想要改变可见度,所以你可以使用toggleSoftInputFromWindow (IBinder windowToken, int showFlags, int hideFlags)

具体地

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

希望有所帮助。