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