有没有办法知道用户在运行时隐藏虚拟键盘。 在给我标记重复的问题之前,首先要理解我的问题,因为它似乎是重复的,我也发现了很多相关主题的问题。但没有找到任何答案。
我的问题在某些事件发生时就像说方向改变一样,我需要知道用户是否已经最小化了键盘。所以我采取相应的行动。我试图非常具体地提问,即使任何解释都可以随意提问。任何帮助将不胜感激。谢谢 我的尝试
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();
}
}
});
答案 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);
希望有所帮助。