【发布时间】:2021-11-06 12:05:36
【问题描述】:
在我的 Jetpack Compose 项目中,我的一个组件使用来自 Accompanist 的 FlowRow。
但我不知道如何让FlowRow 滚动到给定的“节点”。
这里是我@Composable的相关代码:
sealed class MovesNavigatorElement(open val text: String)
data class MoveNumber(override val text: String) : MovesNavigatorElement(text)
data class HalfMoveSAN(override val text: String) : MovesNavigatorElement(text)
@Composable
fun MovesNavigator(modifier: Modifier = Modifier, elements: Array<MovesNavigatorElement>, mustBeVisibleByDefaultElementIndex: Int) {
val vertScrollState = rememberScrollState()
FlowRow(
modifier = modifier
.background(color = Color.Yellow.copy(alpha = 0.3f))
.verticalScroll(vertScrollState),
mainAxisSpacing = 10.dp,
crossAxisSpacing = 15.dp,
) {
elements.map {
Text(text = it.text, fontSize = 34.sp, color = Color.Blue, style= MaterialTheme.typography.body1)
}
}
}
您可以在哪里看到我将FlowRow 的“节点”声明为列表:参数elements。另外我在局部变量vertScrollState 中使用了ScrollState。
但是,假设我想让它滚动到elements[30]:我应该怎么做?鉴于mustBeVisibleByDefaultElementIndex 是必须默认可见的元素的索引。我的意思是,当组合发生时。但是用户当然可以稍后改变位置。
换句话说:
- 在组合时:给定索引的元素可见
- 然后,当然,在任何其他合成发生之前,用户可以使用滚动条滚动它。
【问题讨论】:
标签: android android-jetpack-compose jetpack-compose-accompanist