2

我正在尝试运行一个简单的 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() 语句之后的行来测试滚动功能

4

3 回答 3

4

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您必须使用提供的功能之一:itemitems和。itemsindexedstickyHeader

于 2021-04-09T18:52:40.680 回答
1

错误工作室应该显示的是@Composable invocations can only happen from the context of a @Composable function;这是您在编译此函数时遇到的错误。Studio 显示(error: could not render message)的是团队正在处理的一个已知错误。

compose 编译器插件生成此错误的原因是预期的 lambdaLazyColumn不是可组合的 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 行。

于 2021-04-16T22:12:13.770 回答
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))
}
于 2021-04-09T18:00:34.637 回答