我正在尝试运行一个简单的 LazyColumn 对象,但是如果没有这个奇怪的错误,我就无法运行它。 这是我的代码:
@Composable
fun Test(){
LazyColumn() {
Text(text = "Placeholder", fontSize= 30.sp)
Spacer(modifier = Modifier.padding(10.dp))
}
}
以下是错误:
org.jetbrains.kotlin.diagnostics.SimpleDiagnostic@74c0fa2 (error: could not render message)
org.jetbrains.kotlin.diagnostics.SimpleDiagnostic@c077eec3 (error: could not render message)
是我的代码有问题,还是错误? *我想通过一遍又一遍地复制和粘贴 LazyColumn() 语句之后的行来测试滚动功能
答案 0 :(得分:1)
通过 1.0.0-beta04
,您可以使用:
val itemsList = (0..50).toList()
LazyColumn() {
items(itemsList) {
Text(text = "Placeholder", fontSize = 30.sp)
Spacer(modifier = Modifier.padding(10.dp))
}
}
在 LazyListScope
中,为了显示您必须使用提供的功能之一的项目:item
、items
、itemsindexed
和 stickyHeader
。< /p>
答案 1 :(得分:0)
试试这个:
@Composable
fun Test(){
LazyColumn() {
for (i in 1..10) {
TestItem(i)
}
}
}
@Composable
fun TestItem(i: Int) {
Text(text = "Placeholder $i", fontSize = 30.sp)
Spacer(modifier = Modifier.padding(10.dp))
}
答案 2 :(得分:0)
应该显示的错误工作室是 @Composable invocations can only happen from the context of a @Composable function
;这是您在编译此函数时遇到的错误。 Studio 显示 (error: could not render message)
是团队正在处理的已知错误。
compose 编译器插件生成此错误的原因是 LazyColumn
预期的 lambda 不是可组合的 lambda,而是描述列的 LazyList
DSL。例如,像,
@Composable
fun Test(){
LazyColumn() {
items(10_000) {
Text(text = "Placeholder $it", fontSize = 30.sp)
Spacer(modifier = Modifier.padding(10.dp))
}
}
}
可能就是你想要的。它不会创建 10,000 个项目,它只会创建足够适合屏幕的项目,并且会根据需要创建额外的行(丢弃被遮挡的行)直到第 9,999 行。