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
相关产品推荐
相关产品推荐

