我只有一个编辑文本。我希望当用户使用完它后,才能清除焦点。
关注所有答案here我已使父级焦点突出,并且在需要时清除了编辑文本的焦点。问题在于,尽管不再聚焦,但键盘仍保持打开状态,因为现在父级处于聚焦状态。对于用户而言,键盘仍处于打开状态是没有意义的。
**要清楚,我正在使用一种关闭键盘的方法。它始终有效,但现在不起作用,可能是因为我上面提到的。
有没有办法消除焦点并关闭键盘?
这是我用来关闭键盘的方法。
untrace(.preformat.ts)
答案 0 :(得分:0)
清除EditText焦点:
EditText editText = findViewById(R.id.someEditText);
editText.clearFocus();
或作为最后的手段:
getWindow().getDecorView().clearFocus();
或还将以下属性添加到布局:
android:focusable="true"
android:focusableInTouchMode="true"
活动中的Java
/*
* Dismiss keyboard
* */
try {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
View v = getWindow().getCurrentFocus();
if (v != null) {
IBinder windowToken = v.getWindowToken();
if (windowToken != null && imm != null) {
imm.hideSoftInputFromWindow(windowToken, 0);
}
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
Kotlin扩展功能
/*
* Dismiss keyboard
* */
fun Context.dismissKeyboard() {
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
val windowToken = (this as? Activity)?.currentFocus?.windowToken
windowToken?.let { imm.hideSoftInputFromWindow(it, 0) }
}