在 EditText 中将按钮设置为 Done 而不是 Go
Set the button to Done instead of Go in EditText
我正在尝试将软键中的按钮从 "Go" 切换到 "Done",反之亦然。
如果我只是设置 imeoption
private fun showDoneOnSoftKeyboard() {
setImeOptionsOnSoftKeyboard(EditorInfo.IME_ACTION_DONE)
}
private fun showGoOnSoftKeyboard() {
setImeOptionsOnSoftKeyboard(EditorInfo.IME_ACTION_GO)
}
private fun setImeOptionsOnSoftKeyboard(imeOptions: Int) {
contractIdInput.imeOptions = imeOptions
}
按钮未更改。我发现这样做:
private fun setImeOptionsOnSoftKeyboard(imeOptions: Int) {
val inputType = contractIdInput.inputType
contractIdInput.inputType = InputType.TYPE_NULL
contractIdInput.imeOptions = imeOptions
contractIdInput.inputType = inputType
}
按钮已更改。问题是虽然键盘设置被重置,这意味着如果我在状态之间切换后设置了大写锁定(例如从 Done 到 Go) 然后大写锁定被重置。
我也试过了
contractIdInput.imeOptions = imeOptions
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.restartInput(contractIdInput)
但这有同样的效果。
我也试过这个:
contractIdInput.setImeActionLabel("Custom text", KeyEvent.KEYCODE_ENTER)
但是也没用。
有没有其他方法可以做到这一点?
这好像做不到。 IME 选项被认为是在 XML 中静态设置或以编程方式设置,但它们不能在用户键入时动态修改。
我正在尝试将软键中的按钮从 "Go" 切换到 "Done",反之亦然。 如果我只是设置 imeoption
private fun showDoneOnSoftKeyboard() {
setImeOptionsOnSoftKeyboard(EditorInfo.IME_ACTION_DONE)
}
private fun showGoOnSoftKeyboard() {
setImeOptionsOnSoftKeyboard(EditorInfo.IME_ACTION_GO)
}
private fun setImeOptionsOnSoftKeyboard(imeOptions: Int) {
contractIdInput.imeOptions = imeOptions
}
按钮未更改。我发现这样做:
private fun setImeOptionsOnSoftKeyboard(imeOptions: Int) {
val inputType = contractIdInput.inputType
contractIdInput.inputType = InputType.TYPE_NULL
contractIdInput.imeOptions = imeOptions
contractIdInput.inputType = inputType
}
按钮已更改。问题是虽然键盘设置被重置,这意味着如果我在状态之间切换后设置了大写锁定(例如从 Done 到 Go) 然后大写锁定被重置。
我也试过了
contractIdInput.imeOptions = imeOptions
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.restartInput(contractIdInput)
但这有同样的效果。
我也试过这个:
contractIdInput.setImeActionLabel("Custom text", KeyEvent.KEYCODE_ENTER)
但是也没用。
有没有其他方法可以做到这一点?
这好像做不到。 IME 选项被认为是在 XML 中静态设置或以编程方式设置,但它们不能在用户键入时动态修改。