我想知道是否有办法处理用户在输入 EditText
时按下 Enter 键
,类似于 onSubmit HTML 事件。
还想知道是否有一种方法可以操作虚拟键盘,即“完成”按钮被标记为其他内容(例如“开始”)并在单击时执行特定操作(再次,如 onSubmit)。
原文由 Felix 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想知道是否有办法处理用户在输入 EditText
时按下 Enter 键
,类似于 onSubmit HTML 事件。
还想知道是否有一种方法可以操作虚拟键盘,即“完成”按钮被标记为其他内容(例如“开始”)并在单击时执行特定操作(再次,如 onSubmit)。
原文由 Felix 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您使用 DataBinding,请参阅 https://stackoverflow.com/a/52902266/2914140 和 https://stackoverflow.com/a/67933283/2914140 。
绑定.kt:
@BindingAdapter("onEditorEnterAction")
fun EditText.onEditorEnterAction(callback: OnActionListener?) {
if (callback == null) setOnEditorActionListener(null)
else setOnEditorActionListener { v, actionId, event ->
val imeAction = when (actionId) {
EditorInfo.IME_ACTION_DONE,
EditorInfo.IME_ACTION_SEND,
EditorInfo.IME_ACTION_GO -> true
else -> false
}
val keydownEvent = event?.keyCode == KeyEvent.KEYCODE_ENTER
&& event.action == KeyEvent.ACTION_DOWN
if (imeAction or keydownEvent) {
callback.enterPressed()
return@setOnEditorActionListener true
}
return@setOnEditorActionListener false
}
}
interface OnActionListener {
fun enterPressed()
}
布局.xml:
<data>
<variable
name="viewModel"
type="YourViewModel" />
</data>
<EditText
android:imeOptions="actionDone|actionSend|actionGo"
android:singleLine="true"
android:text="@={viewModel.message}"
app:onEditorEnterAction="@{() -> viewModel.send()}" />
原文由 CoolMind 发布,翻译遵循 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 阅读
是的。
也是的。
您将需要查看
android:imeActionId
和android:imeOptions
属性,以及setOnEditorActionListener()
方法,所有这些都在TextView
上要将“完成”按钮的文本更改为自定义字符串,请使用: