【发布时间】:2021-09-15 21:30:10
【问题描述】:
我正在使用 Jetpack Compose 版本 1.0.2(截至今天的最新稳定版)。
我有多个LazyRows 中的Column,其中有一个Image 和两个Text。
看下面的结构(简化)
val topicList: List<Topics>
Column {
topicList.forEach { topic ->
val showList: List<Show> = topic.shows
Column {
Text(text = topic.title)
LazyRow {
items(showList) { show ->
Column {
Image()
Text(text = show.title)
Text(text = show.info)
}
}
}
Spacer(Modifier.height(32.dp))
}
}
}
问题是Text 与show.title 和show.info 的组合可以是多行,并且由于每个项目都是延迟加载的,因此直到它显示在屏幕上才会计算高度。结果,下一行的y 的位置跳来跳去。
要了解发生了什么,请观看此视频:Video link
如何动态计算Spacer 的高度,以使它们不会跳跃?我知道简单的解决方案只是给出一个固定的高度,但有些文本只是一个衬里,那些会有更大的差距,所以我认为这对我来说并不是很理想。
【问题讨论】:
-
嗯,这不正是这里发生的事情吗?高度是根据文本值动态计算的。我不明白你想在这里做什么。请进一步详细说明。
-
@MARSK 是的,该行为准确地显示了它根据我的代码的预期行为方式。期望的行为是,在知道潜在的更长高度的文本组合之前,以某种方式已经知道全高,所以我可以相应地调整 Spacer 组合的高度。
-
嗯。我是这么想的,但是当您指出如果文本很小但高度仍然很大并留有空白区域时会不好看时,我感到困惑。
-
@MARSK 对不起,我让你感到困惑。我正在寻找一些方法来根据文本可组合物的高度调整 Spacer 的高度。所以在用户看来,当前行下面的行不会跳来跳去。
标签: android android-jetpack-compose