Jetpack Compose:如果动画滚动被中断并开始新的滚动,LazyColumn 不会呈现某些项目
Jetpack Compose: LazyColumn does not render some items if animated scroll is interrupted and a new one is started
我目前正在试用 Android Jetpack Compose 并希望使用 LazyColumn
实现类似 RecyclerView
的列表。但是,当在用户滚动期间或在另一个程序滚动(动画)期间以编程方式滚动(动画)到某个项目时,列表中的某些项目不会呈现。这是 Compose 的问题还是我没有正确实现滚动?
举个简单的例子,可以用下面的代码:
class MainActivity : ComponentActivity() {
@ExperimentalTime
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val listState = rememberLazyListState()
rememberCoroutineScope().launch {
delay(10.seconds)
listState.animateScrollToItem(1000)
delay(100.milliseconds)
listState.animateScrollToItem(0)
}
LazyColumn(
state = listState,
contentPadding = PaddingValues(1.dp),
) {
items(1000) {
Text(
text = "$it",
modifier = Modifier
.padding(2.dp)
.clip(MaterialTheme.shapes.small)
.background(MaterialTheme.colors.onSurface)
.padding(8.dp)
.fillMaxWidth(),
color = MaterialTheme.colors.surface,
textAlign = TextAlign.Center,
)
}
}
}
}
}
我还录制了应用程序的示例视频:https://i.imgur.com/dKFn1VH.mp4。
这是一个错误:
https://issuetracker.google.com/issues/188566058
它是固定的,预计在 1.0.0-beta08
。
我目前正在试用 Android Jetpack Compose 并希望使用 LazyColumn
实现类似 RecyclerView
的列表。但是,当在用户滚动期间或在另一个程序滚动(动画)期间以编程方式滚动(动画)到某个项目时,列表中的某些项目不会呈现。这是 Compose 的问题还是我没有正确实现滚动?
举个简单的例子,可以用下面的代码:
class MainActivity : ComponentActivity() {
@ExperimentalTime
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val listState = rememberLazyListState()
rememberCoroutineScope().launch {
delay(10.seconds)
listState.animateScrollToItem(1000)
delay(100.milliseconds)
listState.animateScrollToItem(0)
}
LazyColumn(
state = listState,
contentPadding = PaddingValues(1.dp),
) {
items(1000) {
Text(
text = "$it",
modifier = Modifier
.padding(2.dp)
.clip(MaterialTheme.shapes.small)
.background(MaterialTheme.colors.onSurface)
.padding(8.dp)
.fillMaxWidth(),
color = MaterialTheme.colors.surface,
textAlign = TextAlign.Center,
)
}
}
}
}
}
我还录制了应用程序的示例视频:https://i.imgur.com/dKFn1VH.mp4。
这是一个错误:
https://issuetracker.google.com/issues/188566058
它是固定的,预计在 1.0.0-beta08
。