Jetpack 撰写滚动监听器

Fla*_*Nes 13 android android-jetpack-compose

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

Gab*_*tti 17

您可以观察scrollState

 val scrollState = rememberScrollState()
 Column(
    modifier = Modifier
        .verticalScroll(scrollState)
)
Run Code Online (Sandbox Code Playgroud)

您可以检查此值scrollState

if (scrollState.isScrollInProgress){
    println("scrolling")
}
Run Code Online (Sandbox Code Playgroud)

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

if (scrollState.isScrollInProgress) {
    DisposableEffect(Unit) {
        onDispose {
            println("scroll completed")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Oni*_*vas 5

您可以通过收集如下值来继续侦听惰性列表的状态:

val state = rememberLazyListState()

LaunchedEffect(state) {
        snapshotFlow { state.isScrollInProgress }
            .collect { /* here boolean result */ }
    }
Run Code Online (Sandbox Code Playgroud)


Fla*_*Nes 2

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