Элементы Jetpack Compose LazyColumn прокручиваются над StickyHeader и не прокручиваются до последнего элемента.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Элементы Jetpack Compose LazyColumn прокручиваются над StickyHeader и не прокручиваются до последнего элемента.

Сообщение Anonymous »

Я борюсь с созданием LazyColumn для реактивного ранца и функциональностью StickyHeader. В принципе, статический вид работает хорошо, но как только я начинаю прокручивать, элементы выходят за закрепленные заголовки, прокрутка начинает вести себя странно, и последний элемент никогда не будет виден, поскольку прокрутка всегда возвращается в норму.
Вот как это выглядит:
Изображение

Вот что можно составить:

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

@OptIn(ExperimentalFoundationApi::class)
@Composable
fun CollectionsScreen(
collectionsLive: LiveData,
onCollectionChanged: (ICalCollection) -> Unit
/* some more hoisted functions left out for simplicity */
) {

val list by collectionsLive.observeAsState(emptyList())
val grouped = list.groupBy { it.accountName ?: it.accountType ?: "Account" }

LazyColumn(
modifier = Modifier.padding(8.dp)
) {

item {
Text(
stringResource(id = R.string.collections_info),
textAlign = TextAlign.Center,
modifier = Modifier.padding(bottom = 16.dp)
)
}

grouped.forEach { (account, collectionsInAccount) ->
stickyHeader {
Text(
account,
style = MaterialTheme.typography.titleLarge,
fontWeight = FontWeight.Bold,
modifier = Modifier.padding(
top = 16.dp,
start = 8.dp,
end = 16.dp,
bottom = 8.dp
)
)
}

items(
items = collectionsInAccount,
key = { collection -> collection.collectionId }
) { collection ->

CollectionCard(
collection = collection,
allCollections = list,
onCollectionChanged = onCollectionChanged,
/* some more hoisted functions left out for simplicity */
modifier = Modifier
.fillMaxWidth()
.padding(bottom = 8.dp)
.animateItemPlacement()
.combinedClickable(
//onClick = { onCollectionClicked(collection) }
)
)
}
}
}
}
Я действительно не уверен, что вызывает эту проблему, поскольку сам код довольно прост из примера, приведенного в документации. Только сама CollectionCard имеет более сложную структуру.
Я также пробовал удалить текст заголовка (первый элемент) и удалил Modifier.animateItemPlacement() для карты, но без разницы, проблема остается той же...
Сам составной элемент используется в представлении составления внутри фрагмента, но вложенной прокрутки нет.
Есть ли у вас какие-либо идеи, что может вызвать такое странное поведение? Или это может быть ошибка при использовании карточек в LazyColumn с прикрепленными заголовками?
ОБНОВЛЕНИЕ:
Похоже, что проблема не связана с липким заголовком, а каким-то образом связана с LazyColumn. Если я заменю «stickyHeader» только на «item», проблема все равно останется... Только когда я заменю lazyColumn столбцом, это сработает. Но я предполагаю, что должно быть решение этой проблемы...

Подробнее здесь: https://stackoverflow.com/questions/726 ... -scroll-to
Ответить

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

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

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

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

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