我想在用户完成编辑 EditText 时捕获一个事件。
怎么做到呢?
原文由 eddyuk 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想在用户完成编辑 EditText 时捕获一个事件。
怎么做到呢?
原文由 eddyuk 发布,翻译遵循 CC BY-SA 4.0 许可协议
Kotlin 中最简单的方法是:
fun TextView.addOnFinishedTypingListener(runnable: Runnable) {
val handler = Handler(Looper.getMainLooper())
addTextChangedListener(
{ _, _, _, _ -> },
{ _, _, _, _ -> handler.removeCallbacks(runnable) },
{ handler.postDelayed(runnable, 1000) }
)
setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q || handler.hasCallbacks(runnable)) {
handler.removeCallbacks(runnable)
runnable.run()
}
}
false
}
}
你可以这样称呼它:
binding.yourtextfield.addOnFinishedTypingListener {
//TODO your stuff
}
它会在用户停止输入一秒钟或按下完成后触发该操作。要使后者工作,您还需要在 xml 中:
android:imeOptions="actionDone"
原文由 Oliver Hoffmann 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答1.3k 阅读✓ 已解决
2 回答2.6k 阅读
2 回答1.7k 阅读
1 回答2.1k 阅读
1 回答1.1k 阅读
1 回答1.3k 阅读
1.3k 阅读
当用户完成编辑后,他/她将按下
Done
或Enter