【问题标题】:Jetpack compose scroll listenerJetpack 撰写滚动监听器
【发布时间】:2021-09-10 16:17:39
【问题描述】:

有没有一种方法可以在滚动列时记录事件?我让它可滚动,保存了滚动状态,但我找不到在哪里调用作为 param 给出的 lambda 函数来组合 onScroll: () -> Unit

【问题讨论】:

    标签: android android-jetpack-compose


    【解决方案1】:

    你可以观察scrollState

     val scrollState = rememberScrollState()
     Column(
        modifier = Modifier
            .verticalScroll(scrollState)
    )
    

    你可以查看这个scrollState的值:

    if (scrollState.isScrollInProgress){
        println("scrolling")
    }
    

    如果需要等待滚动完成,可以使用if + DisposableEffect

    if (scrollState.isScrollInProgress) {
        DisposableEffect(Unit) {
            onDispose {
                println("scroll completed")
            }
        }
    }
    

    【讨论】:

    • DisposableEffect 怎么知道它是为 scrollState 而我们只给它 Unit 作为键的?
    • @Henning 滚动完成后,DisposableEffect 从合成中消失并自动处理。作曲很神奇!
    【解决方案2】:

    有一个关于滚动状态的属性叫做 isScrollInProgress。那个可以用。如果 isScrollInProgress 为真,我调用了我自己的 lambda 函数 onScroll()。工作正常。

    【讨论】:

      猜你喜欢
      • 2021-08-13
      • 2022-11-22
      • 2019-11-27
      • 2022-12-10
      • 2021-07-12
      • 1970-01-01
      • 2016-08-18
      • 2022-06-25
      • 1970-01-01
      相关资源
      最近更新 更多