在EditText中将按钮设置为Done而不是Go

时间:2017-11-10 13:32:08

标签: android android-edittext imeoptions

我试图在" Go"中切换软键中的按钮。到"完成"反之亦然。 如果我只是设置了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
}

按钮已更改。问题是键盘设置被重置,这意味着如果我在状态之间切换后设置了大写锁定(例如从完成 Go ),那么大写封锁重置。

我也试过

contractIdInput.imeOptions = imeOptions
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.restartInput(contractIdInput)

但这具有相同的效果。

我也试过这个:

contractIdInput.setImeActionLabel("Custom text", KeyEvent.KEYCODE_ENTER)

但它也不起作用。

还有其他方法可以做同样的事吗?

1 个答案:

答案 0 :(得分:0)

看起来无法做到这一点。 IME选项被认为是在XML中静态设置或以编程方式设置,但在用户输入时无法动态修改它们。