Jetpack Compose - 检测 LazyColumn 的滚动位置何时位于第一个索引

dan*_*elp 6 android-jetpack android-jetpack-compose

我想要我的LazyColumn. 我成功地使按钮起作用了。但如果我已经位于 的顶部,我希望它不可见LazyColumn。我怎样才能做到这一点?

Phi*_*hov 13

LazyColumn具有state属性,如果您传递自定义值而不是默认值,则可以对状态更改做出反应。

为了防止冗余重组,在这种情况下derivedStateOf应该使用:只有当基于其他状态变量的生成结果发生更改时,它才会触发重组:

Box {
    val state = rememberLazyListState()
    LazyColumn(state = state) {
        // ...
    }
    val firstItemVisible by remember {
        derivedStateOf {
            state.firstVisibleItemIndex == 0
        }
    }
    if (!firstItemVisible) {
        Button(onClick = { /*TODO*/ }) {

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 是的,你的答案更好。这确实是应该使用 derviedStateOf 的情况。现在我认为总的来说应该接受更好的答案,无论时差如何。(https://meta.stackexchange.com/questions/47448/allow-me-to-accept-an-answer-immediately) (2认同)