Kotlin Jetpack Compose LazyColumn + StickyHeader: выделенный элемент скрывается под прикрепленным заголовком при навигацAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Kotlin Jetpack Compose LazyColumn + StickyHeader: выделенный элемент скрывается под прикрепленным заголовком при навигац

Сообщение Anonymous »

У меня есть LazyColumn с несколькими липкими заголовками. При навигации по списку с помощью клавиатуры я столкнулся с проблемой макета.
Ожидаемое поведение
Когда элемент получает фокус, список должен прокручиваться так, чтобы элемент был полностью виден под прикрепленным заголовком.
Фактическое поведение
При переходе по списку к элементам под прикрепленным заголовком:
  • элемент, находящийся в фокусе, частично скрыт за прикрепленным заголовком.
  • похоже, что логика автоматической прокрутки до фокуса не заботится о высоте закрепленного заголовка.
Это происходит как при навигации по экрану с помощью клавиатуры, так и при использовании голосовой связи.
Короче: когда фокус перемещается вниз по списку, все работает нормально, когда фокус перемещается вверх, элементы закрываются липким заголовком.
Изображение

Мой код выглядит так:

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

LazyColumn(modifier = modifier) {
repeat(7) { headerIndex ->
stickyHeader {
Box(
modifier = Modifier
.fillMaxWidth()
.background(Color.LightGray)
) {
Text(
text = "Header $headerIndex",
modifier = Modifier.padding(horizontal = 16.dp, vertical = 8.dp)
)
}
}
items(3) { itemIndex ->
Text(
text = "Item $itemIndex",
fontSize = 32.sp,
modifier = Modifier
.clickable {}
.fillMaxWidth()
.padding(horizontal = 16.dp, vertical = 16.dp)
)
}
}
}
Среда:
Версия Kotlin: 2.2.21
Версия Jetpack Compose: 1.10.0
Версия Material3: 1.4.0
Устройство: Pixel 9a Android 16
Вопрос
Как обеспечить, чтобы элемент, находящийся в фокусе, был полностью виден и не закрывался липким заголовком при навигации с помощью клавиатуры или TalkBack?>

Подробнее здесь: https://stackoverflow.com/questions/798 ... under-stic
Ответить

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

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

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

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

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