#android #kotlin #textfield #android-jetpack-compose #android-jetpack-compose-text
Вопрос:
Из того, что я понимаю, существует API для текстового поля Jetpack Compose для захвата действий с клавиатуры, но я не знаю, что из этих API, которые могут захватывать ввод-ввод
Вариант использования этого ввода ввода для захвата состоит в том, чтобы разрешить нажать «Ввод» и попытаться перейти к следующему текстовому полю, сохраняя при этом клавиатуру открытой
OutlinedTextField(
value = username.value,
onValueChange = {
username.value = it
},
keyboardActions = KeyboardActions(
onDone = {},
onGo = {},
onNext = {},
onPrevious ={},
onSearch ={},
onSend = {}
)
)
Ответ №1:
Вы можете использовать что-то вроде:
val (focusRequester) = FocusRequester.createRefs()
TextField(
value = text,
onValueChange = {
text = it
},
singleLine = true,
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(
onDone = { focusRequester.requestFocus() }
),
modifier = Modifier.onKeyEvent {
if (it.nativeKeyEvent.keyCode == KeyEvent.KEYCODE_ENTER){
focusRequester.requestFocus()
true
}
false
}
)
TextField(
value = text2,
onValueChange = {
text2 = it
},
modifier = Modifier.focusRequester(focusRequester),
)
Комментарии:
1. спасибо за это, я попытался добавить это во 2-е текстовое
singleLine = true, keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), keyboardActions = KeyboardActions( onDone = { focusRequester.requestFocus() } ), modifier = Modifier.onKeyEvent { if (it.nativeKeyEvent.keyCode == KeyEvent.KEYCODE_ENTER){ focusRequester.requestFocus() true } false }
поле во второе текстовое поле и использоватьfocusRequester.freeFocus()
вместо этого, но почему-то это не убрало фокус на 2-м текстовом поле. Есть идеи по этому поводу?2. @ArcRuler Использовать
val focusManager = LocalFocusManager.current
и воModifier.onKeyEvent
2-м поле:focusManager.clearFocus()