在Jetpack Compose中去除LazyColumn的过度滚动效果

26

我正在使用Jetpack Compose的1.1.0-alpha05版本,想知道是否有一种方法可以像XML一样关闭LazyColumn的滚动效果(例如,android:overScrollMode="never")?

输入图像描述

2个回答

50
你可以通过提供LocalOverscrollConfiguration来禁用它:
CompositionLocalProvider(
    LocalOverscrollConfiguration provides null
) {
    LazyColumn(Modifier.fillMaxWidth()) {
        items(1000) {
            Text(it.toString())
        }
    }
}

您还可以将其构建到您的主题中,以使其适用于整个应用程序:

@Composable
fun AppTheme(
    darkTheme: Boolean = isSystemInDarkTheme(),
    content: @Composable () -> Unit
) {
    val colors = if (darkTheme) {
        DarkThemeColors
    } else {
        LightThemeColors
    }
    MaterialTheme(
        colors = colors,
        typography = typography,
        shapes = shapes,
    ) {
        CompositionLocalProvider(
            LocalOverscrollConfiguration provides null,
            content = content
        )
    }
}

p.s. 在 1.2.0-rc01 中,LocalOverScrollConfiguration 已更名为 LocalOverscrollConfiguration


有没有一种方法可以创建自定义的超滚动动画,类似于 https://dev59.com/u1kR5IYBdhLWcg3w1wgh? - slaviboy
@slaviboy https://dev59.com/M24NtIcB2Jgan1znXn0d#70632616 - Phil Dukhov
@slaviboy 这里是自定义超出滚动效果的组合方式。https://developer.android.com/reference/kotlin/androidx/compose/foundation/OverscrollEffect - Sheikh Zakir Ahmad
如果屏幕上的内容很少,是否有办法添加滚动动画?因为如果屏幕上的数据很少,懒加载列不会进行动画效果。@PhilDukhov - Tippu Fisal Sheriff

0

对于嵌套LazyColumn的人:

为了消除出现在嵌套内容周围的不美观的过度滚动效果,请不要忘记在其上设置userScrollEnabled = false


如果屏幕上的内容很少,我们有没有办法添加滚动动画?如果屏幕上的数据很少,懒加载列就不会执行动画。 - Tippu Fisal Sheriff
那可能是一个独立的问题 - 尝试创建一个新的SO问题,并填写尽可能多的细节。 - Tom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接