LazyVerticalStaggeredGrid внутри LazyColumn получает ошибку ограничений максимальной высоты бесконечностиAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 LazyVerticalStaggeredGrid внутри LazyColumn получает ошибку ограничений максимальной высоты бесконечности

Сообщение Anonymous »

У меня есть LazyColumn с элементом, содержащим LazyVerticalStaggeredGrid. По умолчанию сетка этого элемента невидима, и когда вы нажимаете на нее, сетка становится видимой. Когда сетка видна, приложение вылетает, и появляется следующая ошибка:

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

java.lang.IllegalStateException: Vertically scrollable component was measured with an infinity maximum height constraints, which is disallowed. One of the common reasons is nesting layouts like LazyColumn and Column(Modifier.verticalScroll()). If you want to add a header before the list of items please add a header as a separate item() before the main items() inside the LazyColumn scope. There are could be other reasons for this to happen: your ComposeView was added into a LinearLayout with some weight, you applied Modifier.wrapContentSize(unbounded = true) or wrote a custom layout. Please try to remove the source of infinite constraints in the hierarchy above the scrolling container.
Мне просто нужна эта сетка для эффекта, который элементы внутри нее производят.
Это мой код:

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

@Composable
fun Test() {

LazyColumn(
Modifier.fillMaxSize().padding(vertical = 40.dp, horizontal = 16.dp)
) {
item { MyGrid("Task Monday") }
item { MyGrid("Task Tuesday") }
}
}

@Composable
fun MyGrid(text: String) {

var expanded by remember { mutableStateOf(false) }
val tasks = listOf(
"Make the bed",
"Pick up the clothes",
"Feed the pet",
"Clean the dishes",
"Work out",
)

Column(Modifier
.clickable { expanded = !expanded }
.padding(horizontal = 8.dp, vertical = 12.dp)) {

Text(
text = text, fontSize = 14.sp,
)

AnimatedVisibility(expanded) {

LazyVerticalStaggeredGrid(
columns = StaggeredGridCells.Adaptive(88.dp),
verticalItemSpacing = 8.dp,
horizontalArrangement = Arrangement.spacedBy(8.dp),
userScrollEnabled = false,
) {
items(tasks) { task ->
CardItem(task)
}
}
}
}
}
Я могу решить эту проблему, задав фиксированную высоту LazyVerticalStaggeredGrid, но я не знаю, какую высоту она будет иметь, поскольку высота CardItem может меняться.
Это результат использования Modifier.height(300.dp) в LazyVerticalStaggeredGrid


Подробнее здесь: https://stackoverflow.com/questions/791 ... t-constrai
Ответить

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

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

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

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

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