FocusRequester() и LocalFocusManager не работают должным образом при создании реактивного ранцаAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 FocusRequester() и LocalFocusManager не работают должным образом при создании реактивного ранца

Сообщение Anonymous »

У меня есть два TextField, чтобы обеспечить хороший UX, я попытался использовать свойства KeyboardOptions и KeyboardActions TextField. Я пробовал как:

Код: Выделить всё

val focusRequester = remember {
FocusRequester()
}

val localFocusManager = LocalFocusManager.current

Row(
modifier =  Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceBetween
) {
Column(
modifier =  Modifier.weight(1f)
) {
Text(
modifier = Modifier.fillMaxWidth().padding(
horizontal = 16.dp,
vertical = 8.dp
),
text = "Date",
style = TextStyle(
color = MaterialTheme.colorScheme.onSurface,
fontSize = 18.sp,
fontWeight = FontWeight.Bold
)
)

TextField(
modifier = Modifier.fillMaxWidth().padding(
end = 8.dp
).focusRequester(
focusRequester = focusRequester
).onFocusEvent {
if (it.isFocused) {
showDatePicker = true //changing the visibility state
} else {
showDatePicker = false
}
},
value = inputDate,
onValueChange = { inputDate = it },
placeholder = {
Text(text = "dd/mm/yy")
},
leadingIcon = {
Icon(
modifier = Modifier.size(24.dp),
imageVector = ImageVector.vectorResource(R.drawable.calendar_days_svgrepo_com),
contentDescription = "Date icon")
},
keyboardOptions = KeyboardOptions(
imeAction = ImeAction.Next
),
keyboardActions = KeyboardActions(
onNext = {
localFocusManager.moveFocus(
focusDirection = FocusDirection.Next
)
}
)
)
}

Column(
modifier =  Modifier.weight(1f)
) {
Text(
modifier = Modifier.fillMaxWidth().padding(
horizontal = 16.dp,
vertical = 8.dp
),
text = "Time",
style = TextStyle(
color = MaterialTheme.colorScheme.onSurface,
fontSize = 18.sp,
fontWeight = FontWeight.Bold
)
)

TextField(
modifier = Modifier.fillMaxWidth().padding(
start = 8.dp
).focusRequester(
focusRequester = focusRequester
).onFocusEvent {
if (it.isFocused) {
showTimePicker = true //changing the visibility state
} else {
showTimePicker = false
}
},
value = inputTime,
onValueChange = { inputTime = it },
placeholder = {
Text(text = "Time")
},
leadingIcon = {
Icon(
modifier = Modifier.size(24.dp),
imageVector = ImageVector.vectorResource(R.drawable.stopwatch_svgrepo_com),
contentDescription = "Time icon")
},
keyboardOptions = KeyboardOptions(
imeAction = ImeAction.Done
),
keyboardActions = (
KeyboardActions(
onNext = {
localFocusManager.clearFocus()
}
)
)
)
}
}
В приведенном выше коде отображаются кнопки «Далее» и «Готово», при нажатии кнопки «Далее» фокус не меняется на следующее текстовое поле.
Что-то не хватает или я делаю неправильно, пожалуйста, подскажите.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ck-compose
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»