- 此问题在此处已有答案**:
How to hide soft keyboard on android after clicking outside EditText?(49个答案)
Hide keypad in android while touching outside Edit Text Area(3个答案)
四年前关闭了。
我有一个片段,其中包含用于搜索输入的EditText和ListView。我已经使搜索部分正常工作,但现在我希望在用户单击屏幕上EditText之外的时关闭键盘。我还希望使用click事件(因为它是一个ListView,如果我不使用click事件,用户可能会意外地单击他们不想打开的ListView项)
我知道如何在一个活动中做到这一点,但对于片段来说似乎有所不同。
目前为止我尝试的方法是:
- 在片段中实现
View.OnClickListener
并实现onClick,如下所示:
@Override
public void onClick(View v) {
System.out.println("onClick true");
if (!(v instanceof EditText)) {
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.
INPUT_METHOD_SERVICE);
if (getActivity().getCurrentFocus() != null) {
imm.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), 0);
}
}
}
当我点击的时候,这似乎从来没有发布过"onClick true"。
- 重写片段Activity中的onTouchEvent并按如下方式实现onTouchEvent:
@Override
public boolean onTouchEvent(final MotionEvent event) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.
INPUT_METHOD_SERVICE);
if (getCurrentFocus() != null) {
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}
return true;
}
任何帮助都将不胜感激。先谢了。
1条答案
按热度按时间ecfdbz9o1#
如果我理解正确,您可以尝试使用OnFocusChangeListener:
这只是一个例子,但也许它指向了正确的方向。