是否可以检测键盘是否在屏幕上可见?
由于
答案 0 :(得分:3)
我认为thread应该回答你的问题。总而言之,您可以为活动的根视图指定一个id,例如“@ + id / activityRoot”,然后将GlobalLayoutListener挂钩到该视图的ViewTreeObserver中。在监听器中,您可以检查键盘的可见性,如下所示:
final View activityRootView = findViewById(R.id.activityRoot);
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (getResources().getConfiguration().keyboardHidden == Configuration.KEYBOARDHIDDEN_NO) { // Check if keyboard is not hidden
// ... do something here
}
}
});
这是@Reuben_Scratton和@ Yogesh在上述主题中的答案的组合。
<强>更新强> 请注意,keyboardHidden的文档说如果设备上有硬键盘可用,它将一直返回Configuration.KEYBOARDHIDDEN_YES(例如,像摩托罗拉Droid 1&amp; 2)
答案 1 :(得分:1)
答案 2 :(得分:-3)
您可以尝试以下方法:
InputMethodManager imm =
(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
boolean showingKeyboard = imm.isActive();
希望这有帮助!
编辑:
另一种选择只是强制键盘打开或关闭,具体取决于您希望用户看到的内容:)这将导致更可预测的使用行为,并可能改善用户体验。