由于一些新的修复,我决定将我的项目更新到稳定的Compose1.4.0,但很快发现我所有的可点击卡片的LazyList在滚动时变得非常滞后。我通过添加一个onClick参数使我的卡片可点击。
下面是一些滞后的LazyList示例代码:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
LazyListTestTheme {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
MainContent()
}
}
}
}
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun MainContent() {
Scaffold(
topBar = {
LargeTopAppBar(
title = {
Text(text = "Test app")
}
)
},
content = {
LazyColumn(
contentPadding = it
){
items(
count = 32,
itemContent = { index ->
CustomCard(text = index.toString())
}
)
}
}
)
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun CustomCard(
text: String
) {
Card(
modifier = Modifier
.fillMaxWidth()
.height(128.dp)
.padding(16.dp, 4.dp),
onClick = {
}
) {
Text(
text = text
)
}
}
我在Compose 1.2.0和1.3.2版本上测试了它,然后更新到1.4.0。Compose 1.2.0和1.3.2似乎工作得很好,而1.4.0上的LazyList滚动是滞后的,但只有可点击的元素。我能做什么呢?这是一个新的编写bug还是我做错了什么?
1条答案
按热度按时间w8f9ii691#
尝试使用可点击的修饰符,因为卡片的onClick是实验性的Card(modifier = Modifier .clickable(onClick = { onClickCard()})...
如果没有变化,那么尝试暂时将列表从脚手架中拉出,看看这是否是一个因素。