У моего экрана есть поле ввода внизу. При открытии клавиатуры (Android, iOS) она выдвигает вход в верхнюю часть, чтобы она оставалась над клавиатурой. Точнее, так что базовая линия ввода находится над клавиатурой. Он по -прежнему выравнивает базовую линию текста с верхней частью клавиатуры, а прокладка остается на основе клавиатуры. На iOS проблема сохраняется.
val imeBottomDp = with(density) { WindowInsets.ime.getBottom(this).toDp() }
val extraGap = if (imeBottomDp > 0.dp) 32.dp else 0.dp
Surface(
modifier = Modifier
.padding(bottom = extraGap),
tonalElevation = 2.dp,
shadowElevation = 1.dp,
color = MaterialTheme.colorScheme.surface
) {
BasicTextField(
value = textState,
onValueChange = { textState = it },
enabled = enabled,
modifier = Modifier
.background(Color.Green)
.padding(vertical = 52.dp, horizontal = 8.dp),
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Text,
imeAction = ImeAction.Send,
),
...
< /code>
Есть идеи? Это должно быть возможно без этих обходных путей? Кажется довольно распространенным, если не ожидалось, оставлять некоторое пространство между базовой линией и верхней частью клавиатуры?Surface(
modifier = Modifier
.imePadding()
.padding(bottom = 0.dp),
tonalElevation = 2.dp,
shadowElevation = 1.dp,
color = MaterialTheme.colorScheme.surface
)
Но это добавляет много пространства (200.dp+) между входом и верхней частью клавиатуры.
У моего экрана есть поле ввода внизу. При открытии клавиатуры (Android, iOS) она выдвигает вход в верхнюю часть, чтобы она оставалась над клавиатурой. Точнее, так что базовая линия ввода находится над клавиатурой. Он по -прежнему выравнивает базовую линию текста с верхней частью клавиатуры, а прокладка остается на основе клавиатуры. На iOS проблема сохраняется.[code]val imeBottomDp = with(density) { WindowInsets.ime.getBottom(this).toDp() } val extraGap = if (imeBottomDp > 0.dp) 32.dp else 0.dp
BasicTextField( value = textState, onValueChange = { textState = it }, enabled = enabled, modifier = Modifier .background(Color.Green) .padding(vertical = 52.dp, horizontal = 8.dp), keyboardOptions = KeyboardOptions( keyboardType = KeyboardType.Text, imeAction = ImeAction.Send, ), ... < /code> Есть идеи? Это должно быть возможно без этих обходных путей? Кажется довольно распространенным, если не ожидалось, оставлять некоторое пространство между базовой линией и верхней частью клавиатуры?Surface( modifier = Modifier .imePadding() .padding(bottom = 0.dp), tonalElevation = 2.dp, shadowElevation = 1.dp, color = MaterialTheme.colorScheme.surface ) [/code] Но это добавляет много пространства (200.dp+) между входом и верхней частью клавиатуры.