我有一个 <LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@drawable/header_shape_rect">
,而下面有一个RecyclerView
。我希望当用户点击EditText
以外关闭键盘时。
我搜索并找到了这个答案here,但它对我不起作用。用户点击外部但EditText
仍有焦点。
我的XML代码是:
EditText
答案 0 :(得分:2)
只需将onTouchListener()
设置为RecyclerView
并从中调用hideKeyboard()
方法。
答案 1 :(得分:1)
当editText
失去它的焦点时关闭它。
EditText editText = (EditText) findViewById(R.id.edittxt);
editText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
// code to execute when EditText loses focus
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
}
}
});
答案 2 :(得分:1)
在recyclerview touch listener上调用此方法......
public static void hideKeyboard(final Activity activity) {
final View view = activity.getCurrentFocus();
final InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (view == null) {
View view2 = new View(activity);
imm.hideSoftInputFromWindow(view2.getWindowToken(), 0);
} else {
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
}, 125);
}