AnimatedVisibility 和 BringIntoViewRequester 不能一起工作

Mar*_*arc 9 android-jetpack-compose

我正在构建一个可扩展的可组合项,单击时它将展开。这可以通过使用 AnimatedVisibility 来实现,效果非常好。可见性动画的代码:

AnimatedVisibility(
    visible = isExpanded, 
) {
    // Content removed.
}
Run Code Online (Sandbox Code Playgroud)

我当前面临的问题是,它位于垂直可滚动列中,当单击展开它旁边时,它应该滚动到展开的内容。

BringIntoViewRequester据我所知,这可以通过使用下面的代码片段中的 as来完成:

var isExpanded by remember { mutableStateOf(false) }
val intoViewRequester = remember { BringIntoViewRequester() }

ClickableComposable(modifier = Modifier.clickable {
    isExpanded = !isExpanded
    if(isExpanded) {
        coroutineScope.launch {
            // delay(200)
            intoViewRequester.bringIntoView(rect = null)
        }
     }
})

AnimatedVisibility(
    modifier = Modifier.bringIntoViewRequester(intoViewRequester),
    visible = isExpanded, 
) {
    // Content removed.
}
Run Code Online (Sandbox Code Playgroud)

上面的代码可以处理延迟,但这对于用户来说并不是完美的交互。首先看到内容展开,然后看到页面滚动。理想的情况是它会同时发生,但内容尚未以任何方式进行测量。通过消除延迟,它不起作用,因为内容尚不可见。

Compose 中有什么可以同时进行扩展和滚动吗?