当用户滚动或不滚动屏幕时,我正在try 更改expandLabel(从ContextualHelpFloatingButton, expandLabel: MutableState<Boolean>).如果是滚动,expandLabel应该是false,当用户停止滚动时,应该是true.我已经实现了mutableStateOf()rememberLazyListState(),但它不会像我预期的那样工作:

 @Composable
 private fun FruitDetailView(fruit: FruitModel?, items: List<FruitDetailItem>) {

        var expanded by remember {
            mutableStateOf(true)
        }
        val listState = rememberLazyListState()

        LaunchedEffect(remember { derivedStateOf { listState.firstVisibleItemScrollOffset } }) {
            expanded = listState.firstVisibleItemScrollOffset == 0
        }

        Box {
            LazyColumn(
                modifier = Modifier
                    .background(UiColors.White)
                    .fillMaxHeight()
            ) {

               ...
            }
            Box(
                contentAlignment = Alignment.BottomEnd,
                modifier = Modifier
                    .fillMaxSize()
                    .padding(vertical = 100.dp, horizontal = 20.dp)
            ){
                ContextualHelpFloatingButton(
                    accessibility = accessibility,
                    data = data,
                    interaction = ContextualHelpFloatingButtonInteraction(
                        expandLabel = remember {
                            mutableStateOf(expanded)
                        }
                    )
                )
            }
        }
    }

推荐答案

如果想要显示按钮while no scrolling is currently happening,可以使用以下代码:

val expanded = remember {
    mutableStateOf(true)
}
val listState = rememberLazyListState()    

expanded.value = !listState.isScrollInProgress

请看一下LazyListState的文档.

此外,你还必须这样更改你的ContextualHelpFloatingButton英镑:

ContextualHelpFloatingButton(
    accessibility = accessibility,
    data = data,
    interaction = ContextualHelpFloatingButtonInteraction(
        expandLabel = expanded
    )
)

还要确保将listState正确地分配给LazyColumn:

LazyColumn(
    modifier = Modifier
        .background(UiColors.White)
        .fillMaxHeight(),
    state = listState
) {
    //...
}

Android相关问答推荐

当我在Android上运行应用程序时,组件会随机调整大小和移动

fillMaxHeight中的分数在列内不起作用(android jetpack compose)

在命令行Android应用程序开发中苦苦挣扎

Jetpack Compose主导航中的全屏图标列表

Android Kotlin ImageView内置于Kotlin ImageView中.适配器未按预期更新

如何在Jetpack Compose android中使用导航

如何在使用 PointerInput 修改器时添加点击时的波纹效果

如何使用 Wea​​r OS 上的运行状况服务模拟位置?

任务:app:kaptGenerateStubsDebugKotlin执行失败. > 'compileDebugJavaWithJavac' 任务(当前目标是 1.8)

为什么第二个代码可以安全地在 map 中进行网络调用,因为它已被缓存?

同样的参数值下,为什么requiredSizeIn不等于requiredWidthIn + requiredHeightIn?

尽管我在onCreate()期间已经初始化,但仍出现未初始化的late init变量错误

我的 React Native 在 11 月 4 日之前运行良好,但现在在运行 yarn android 时抛出异常

使用默认使用 RTL 语言的项目本地化 android 应用程序

Android Studio Emulator Internet 连接问题仅是第一次

如何将房间数据库导出到 .CSV

在 jetpack compose 中使用 .shadow 和 Button 会导致问题

如何在不使用 NestedScrollView 的情况下使用带有 CollapsingToolbar 的 ViewPager?

Сan 无法从 Firestore 获取数据,没有错误

我的自定义视图没有显示我应该如何修复它?