提问人:Marco 提问时间:11/16/2023 更新时间:11/16/2023 访问量:8
自动滚动 LazyRow 问题
Autoscrolling LazyRow issue
问:
我正在用按钮填充 LazyRow。按钮的 onClick 工作正常,但是当 LazyRow 自动滚动时,它们不再可单击。为什么? 我也尝试使用画布而不是按钮,但是当 LazyRow 开始自动滚动时,可点击停止工作。
在这里,我通过浏览一组数据来填充 LazyRow with Notes。
val lazyListState = rememberLazyListState()
LazyRow(
horizontalArrangement = Arrangement.Center,
verticalAlignment = Alignment.Top,
modifier = Modifier
.fillMaxSize(),
state = lazyListState,
) {
score.forEachIndexed { index, item ->
items(item.second) {
Note(noteSize, noteSize / 2 + (noteSize / 2) * item.first, item.first)
}
}
}
然后,我启动一个例程,通过在无限循环中调用挂起函数来移动 LazyRow。
LaunchedEffect(key1 = Unit) {
while (true) {
lazyListState.autoScroll()
}
}
suspend fun ScrollableState.autoScroll(
animationSpec: AnimationSpec<Float> = tween(durationMillis = 3000, easing = LinearEasing)
) {
var previousValue = 0f
scroll(MutatePriority.PreventUserInput) {
animate(0f, SCROLL_DX, animationSpec = animationSpec) { currentValue, _ ->
previousValue += scrollBy(currentValue - previousValue)
}
}
}
最后,这里是按钮(注释)
@Composable
fun Note(
noteSize: Dp,
verticalOffSet: Dp,
) {
OutlinedButton(
colors = ButtonDefaults.buttonColors(containerColor = Color.Red),
onClick = { Log.i("Hi", "Hi!") },
modifier = Modifier
.offset(0.dp, verticalOffSet)
.size(noteSize),
shape = CircleShape //create a Generic Shape to model the note head
) { }
}
答: 暂无答案
评论