How to disable and enable scrolling in LazyColumn/LazyRow in Jetpack Compose?(如何在Jetpack Compose中禁用和启用LazyColumn/LazyRow中的滚动?)
本文介绍了如何在Jetpack Compose中禁用和启用LazyColumn/LazyRow中的滚动?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我要在LazyColumn
中以编程方式动态启用和禁用滚动。
LazyListState
上似乎没有任何相关函数,LazyColumn
本身似乎也没有相关参数。如何在Compose中实现这一点?
推荐答案
(当前)没有内置方法来执行此操作,这是一个合理的功能请求。
但是scroll
接口非常灵活,我们可以自己添加。基本上,我们在MutatePriority.PreventUserInput
处创建一个永不结束的伪滚动以防止滚动,然后使用相同优先级的不做任何事情的滚动取消第一个滚动并重新启用滚动。
以下是LazyListState
上禁用/重新启用滚动的两个实用函数,以及它们的实际应用演示(需要一些导入,但Android Studio应该会为您推荐它们)。
请注意,因为我们要控制滚动来完成此操作,所以调用reenableScrolling
也会取消任何正在进行的滚动或翻转(即,您应该仅在禁用滚动并且您想要重新启用它时才调用它,而不仅仅是确认它已启用)。
fun LazyListState.disableScrolling(scope: CoroutineScope) {
scope.launch {
scroll(scrollPriority = MutatePriority.PreventUserInput) {
// Await indefinitely, blocking scrolls
awaitCancellation()
}
}
}
fun LazyListState.reenableScrolling(scope: CoroutineScope) {
scope.launch {
scroll(scrollPriority = MutatePriority.PreventUserInput) {
// Do nothing, just cancel the previous indefinite "scroll"
}
}
}
@Composable
fun StopScrollDemo() {
val scope = rememberCoroutineScope()
val state = rememberLazyListState()
Column {
Row {
Button(onClick = { state.disableScrolling(scope) }) { Text("Disable") }
Button(onClick = { state.reenableScrolling(scope) }) { Text("Re-enable") }
}
LazyColumn(Modifier.fillMaxWidth(), state = state) {
items((1..100).toList()) {
Text("$it", fontSize = 24.sp)
}
}
}
}
这篇关于如何在Jetpack Compose中禁用和启用LazyColumn/LazyRow中的滚动?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何在Jetpack Compose中禁用和启用LazyColumn/LazyRow中的滚动?
基础教程推荐
猜你喜欢
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01