Android 键盘关闭时取消对编辑文本的关注
我想通过点击“完成”或“返回”按钮,实现在键盘关闭时取消对Android 键盘关闭时取消对编辑文本的关注,android,kotlin,android-edittext,Android,Kotlin,Android Edittext,我想通过点击“完成”或“返回”按钮,实现在键盘关闭时取消对EditText(而不是隐藏光标)的聚焦的简单任务。到目前为止,我能找到的只有 window.setSoftInputMode(WindowManager.LayoutParams.SOFT\u INPUT\u STATE\u ALWAYS\u HIDDEN) 但只有当活动首次开放时,它才是好的。键盘关闭后,文本字段处于尴尬的聚焦状态 您可以在键盘关闭时监听事件,然后使用editText.clearFocus()当该事件发生时 有关收听键
EditText
(而不是隐藏光标)的聚焦的简单任务。到目前为止,我能找到的只有
window.setSoftInputMode(WindowManager.LayoutParams.SOFT\u INPUT\u STATE\u ALWAYS\u HIDDEN)
但只有当活动首次开放时,它才是好的。键盘关闭后,文本字段处于尴尬的聚焦状态 您可以在键盘关闭时监听事件,然后使用
editText.clearFocus()代码>当该事件发生时
有关收听键盘关闭事件的信息,请参阅。您可以从编辑文本中清除焦点,还可以管理启用/禁用编辑文本。我不敢相信这是我能找到的解决此问题的最简单的方法(真的,安卓?):
Kotlin版本:
class CustomEditText: AppCompatEditText {
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
constructor(context: Context, attrs: AttributeSet, defStyle: Int) : super(context, attrs, defStyle)
override fun onKeyPreIme(keyCode: Int, event: KeyEvent?): Boolean {
if(keyCode == KeyEvent.KEYCODE_BACK) {
clearFocus()
}
return super.onKeyPreIme(keyCode, event)
}
}
用法:
<com.youappdomain.view.CustomEditText
android:layout_width="match_parent"
android:layout_height="wrap_content" />
如果我有三个编辑文本并想清除焦点,那么调用clearFocus()当键盘被关闭时,代码>在所有这些设备上运行。很简单,成功了,真不敢相信这就是安卓在2018年的工作方式。它确实有这些怪癖,但我们现在必须解决它。未来是光明的,我认为:)如果您正在添加动态组件,那么您可以从父级获取子组件并循环每个元素,您可以清除焦点
<com.youappdomain.view.CustomEditText
android:layout_width="match_parent"
android:layout_height="wrap_content" />