Положение прокрутки при открытии клавиатуры как в «Телеграмме»Android

Форум для тех, кто программирует под Android
Anonymous
Положение прокрутки при открытии клавиатуры как в «Телеграмме»

Сообщение Anonymous »

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

@Composable
fun ChatScreenContent(
modifier: Modifier = Modifier,
// ...
) {
// ...

Column(
modifier = modifier.fillMaxSize(),
) {
LazyColumn(
modifier = Modifier.weight(1f),
contentPadding = PaddingValues(vertical = 8.dp),
state = scrollState,
) {
// ...
}

MessageInput(
modifier = Modifier.padding(horizontal = 4.dp).imePadding(),
// ...
)
Spacer(modifier = Modifier.height(8.dp))
}
}
Когда я использую android:windowSoftInputMode="adjustResize" и imePadding() с MessageInput, при открытии клавиатуры сообщения, которые были видны раньше, скрываются.
Изображение

Я попробовал использовать android:windowSoftInputMode="adjustPan" и удалил imePadding() из MessageInput. Теперь клавиатура не закрывает последнее видимое сообщение, но список сообщений уходит за пределы экрана, и я не могу прокрутить до первого сообщения.
Изображение

Мне бы хотелось, чтобы при открытии клавиатуры последнее сообщение отображалось на экране, а положение прокрутки остается неизменным. Как это было при использовании android:windowSoftInputMode="adjustPan". При этом, чтобы контент не выходил за пределы экрана и были видны все предыдущие сообщения.
При использовании все работает как надо

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

LazyColumn(
// ...
reverseLayout = true
)
Но, естественно, все сообщения отображаются в обратном порядке, а новые добавляются в начало списка...

Подробнее здесь: https://stackoverflow.com/questions/784 ... n-telegram

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