Поэтому в основном я хотел бы отключить клавиатуру всплывет вообще. Клавиатура должна открываться только при ручном нажатии на TextFields, но при этом иметь возможность установить фокус.
Это моя тестовая компоновка:
Код: Выделить всё
var fieldValue by remember { mutableStateOf("") }
val focusRequester = FocusRequester()
val softwareKeyboard = LocalSoftwareKeyboardController.current
var showOutlinedTextField1 by remember { mutableStateOf(true) }
Column {
if (showOutlinedTextField1) {
OutlinedTextField(
label = { Text("TEXT1") },
value = fieldValue,
singleLine = true,
modifier = Modifier
.fillMaxWidth()
.focusRequester(focusRequester),
onValueChange = { enteredValue ->
fieldValue = enteredValue
},
keyboardOptions = KeyboardOptions.Default.copy(
imeAction = ImeAction.Done
),
keyboardActions = KeyboardActions(
onDone = {
fieldValue = ""
showOutlinedTextField1 = false
}
)
)
} else {
OutlinedTextField(
label = { Text("TEXT2") },
value = fieldValue,
singleLine = true,
modifier = Modifier
.fillMaxWidth()
.focusRequester(focusRequester),
onValueChange = { enteredValue ->
fieldValue = enteredValue
},
keyboardOptions = KeyboardOptions.Default.copy(
imeAction = ImeAction.Done
),
keyboardActions = KeyboardActions(
onDone = {
fieldValue = ""
showOutlinedTextField1 = true
}
)
)
}
}
DisposableEffect(showOutlinedTextField1) {
focusRequester.requestFocus()
softwareKeyboard?.hide()
onDispose { }
}
Подробнее здесь: https://stackoverflow.com/questions/782 ... etpack-com