2017-11-10 10 views
1

소프트 키의 버튼을 "이동"에서 "완료"로 또는 그 반대로 전환하려고합니다. 난 그냥 imeoptionEditText에서 Go 대신 Go To 버튼을 설정하십시오.

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 
} 

버튼이 변경되었습니다. 문제는 키보드 설정이 재설정 되었기 때문에 예를 들어 상태간에 전환 한 후에 capslock을 설정하면 (예 : 에서 으로 완료) capslock이 재설정됩니다.

또한

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

을 시도했지만이 같은 효과가 있습니다.

은 나뿐만 아니라이 하나의 시도 :

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

를하지만 중 하나가 작동하지 않습니다.

동일한 작업을 수행 할 수있는 다른 방법이 있습니까?

+0

xml에 android : imeOptions 속성을 사용해 보셨습니까? –

+1

그러나 나는 그것을 dinamically 변경해야합니다 – kingston

+0

그것은 장치 - 특정 (실제로 키보드 - 애플 리케이션 특정) 수 있습니다. 일부 키보드 앱은 이것을 무시합니다. –

답변

0

이렇게 할 수없는 것처럼 보입니다. IME 옵션은 XML 또는 프로그래밍 방식으로 정적으로 설정되는 것으로 생각되지만 사용자가 입력하는 동안 동적으로 수정할 수는 없습니다.