Android - 检测可见键盘?

时间:2011-12-08 19:27:34

标签: android keyboard

是否可以检测键盘是否在屏幕上可见?

由于

3 个答案:

答案 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)

尝试thisthis解决方法,因为在“简单”sdk方法调用中无法实现

答案 2 :(得分:-3)

您可以尝试以下方法:

InputMethodManager imm = 
    (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
boolean showingKeyboard = imm.isActive();

希望这有帮助!

编辑:

另一种选择只是强制键盘打开或关闭,具体取决于您希望用户看到的内容:)这将导致更可预测的使用行为,并可能改善用户体验。