(Kotlin)文本字段焦点



我已经阅读了许多与此相关的线程,但是各种各样的答案使我有点困惑。我有一些材料文本字段在4个不同的片段;我想要的是很常见的:当点击文本字段外(例如在背景上),我希望键盘关闭和文本字段不聚焦。也许有人能给一个明确的解释如何实现这一点?

我认为最好的解决方案是使您的背景可聚焦,并设置焦点更改监听器在您的文本字段控制键盘行为,如

textField.setOnFocusChangeListener { _, hasFocus ->
if (hasFocus) {
showKeyboard()
} else {
hideKeyboard()
}
}

试试这个方案

class CustomFragment {
...
override fun onViewCreated() {
...
textField.setOnFocusChangeListener { _, hasFocus ->
if (hasFocus) {
showKeyboard()
} else {
hideKeyboard()
}
}
}
fun hideKeyboard() {
requireActivity().hideKeboard(true)
}
...
}
fun FragmentActivity.hideKeyboard(clear: Boolean = false) {
this.currentFocus?.let { view ->
(view.context.getSystemService(Context.INPUT_METHOD_SERVICE) as? InputMethodManager)
?.hideSoftInputFromWindow(v.windowToken, 0)
if (clear) view.clearFocus()
}
}

也可以在清除焦点前检查视图类型

if (view is EditText) ...

最新更新