按下向下箭头时隐藏键盘

该图显示了我的应用程序的一部分,带有连接适配器的AutoCompleteTextView 。 当用户在该视图中输入内容时,会显示自动填充建议。

我遇到的问题是:当显示建议并按下设备的向下箭头时,只有来自AutoCompleteTextView的建议关闭,键盘保持打开状态,需要再次点击向下箭头才能消失。

我确实希望建议键盘在向下箭头的第一次敲击时消失。

我尝试覆盖onBackPressed但是当向下箭头被点击时它不会被调用,大概是因为它不被认为是“后退”。

我怎么能这样做?

编辑 :我知道如何以编程方式隐藏键盘,我想我的问题是检测'向下箭头'水龙头。

在这里输入图像描述


尝试在您的AutoCompleteTextView中覆盖onKeyPreIme()方法,如下所示:

@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == 1) {
        super.onKeyPreIme(keyCode, event);
        hideKeyboard()
        return true;
    }
    return super.onKeyPreIme(keyCode, event);
}

你可以尝试这样的事情:

private boolean mIsKeyboardShown;
private EditText mSearchTextView;

@Override
protected void onCreate(Bundle bundle)
  ...
  mSearchTextView = (EditText) findViewById(R.id.search);
  View activityRootView = findViewById(R.id.activityRoot);
  activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
      @Override
      public void onGlobalLayout() {
          int heightDiff = activityRootView.getRootView().getHeight() - activityRootView.getHeight();
          // if more than 100 pixels, its probably a keyboard...
          mIsKeyboardShown = (heightDiff > 100);
       }
  });
}

public void onBackPressed() {
  if(mIsKeyboardShown) {
    // close the keyboard
    InputMethodManager inputManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    inputManager.hideSoftInputFromWindow(mSearchTextView.getWindowToken(), 0);
  } else {
    super.onBackPressed();
  }
}

我没有尝试过代码,但我认为这是正确的方法。


InputMethodManager inputManager = (InputMethodManager)
                                  getSystemService(Context.INPUT_METHOD_SERVICE); 

inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),
                                     InputMethodManager.HIDE_NOT_ALWAYS);

你需要导入android.view.inputmethod.InputMethodManager;

链接地址: http://www.djcxy.com/p/26127.html

上一篇: Hide keyboard when down arrow is pressed

下一篇: JavaFX 8 Localization of dialog's internal elements