You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetpack Compose中FloatingActionButton显隐动画时阴影被裁剪或消失的问题求助

Jetpack Compose中FloatingActionButton显隐动画时阴影被裁剪或消失的问题求助

大家好,我最近在Jetpack Compose里做一个FloatingActionButton的显隐逻辑:用户向下滚动页面时FAB隐藏,向上滚动时重新显示。为了让过渡更自然,我用了AnimatedVisibility组件,搭配fadeIn()+scaleIn()的入场动画和fadeOut()+scaleOut()的退场动画。

以下是我目前用的Composable代码:

@Composable
fun AddNewNoteFAB(
    modifier: Modifier = Modifier,
    isVisible: Boolean = true,
    onClick: () -> Unit
) {
    AnimatedVisibility(
        visible = isVisible,
        enter = fadeIn() + scaleIn(),
        exit = fadeOut() + scaleOut()
    ) {
        FloatingActionButton(
            modifier = modifier,
            onClick = onClick
        ) {
            Icon(
                Icons.Default.Add,
                contentDescription = "Add new note"
            )
        }
    }
}

现在碰到了一个棘手的问题:

  • 当FAB执行隐藏动画时,它的阴影会被部分裁剪
  • 当FAB重新出现的动画过程中,阴影完全消失不见,只有等动画彻底结束后,阴影才会恢复正常显示

我还录制了屏幕演示来展示这个问题的实际表现。

我已经尝试了几种方法,但都没能解决问题:

  • 增加FAB周围的内边距
  • 将FAB包裹在Box组件中,使用Modifier.shadow(..., clip = false)设置阴影
  • 放弃AnimatedVisibility,改用graphicsLayer手动实现缩放和透明度的动画
  • 尝试用AnimatedContent替换AnimatedVisibility

有没有朋友遇到过类似的问题,或者能给我一些解决思路呀?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 13:18:09