Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 键盘关闭时取消对编辑文本的关注_Android_Kotlin_Android Edittext - Fatal编程技术网

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" />