如何在Jetpack Compose中设置ExtendedFloatingActionButton默认阴影高度
ExtendedFloatingActionButton的elevation参数不支持直接传入Dp值,它需要的是FloatingActionButtonElevation类型的实例,这就是直接写6.dp无效的原因。以下是两种有效的解决方法:
1. 直接自定义FloatingActionButtonElevation实例
通过指定不同状态下的阴影高度,实现静止状态显示6dp阴影的需求,同时必须设置onClick回调(按钮禁用时阴影不会显示):
ExtendedFloatingActionButton( text = { Text(text = "Button") }, icon = { Icon(Icons.Filled.Add, contentDescription = "") }, modifier = Modifier.clip(RoundedCornerShape(16.dp)), elevation = FloatingActionButtonElevation( defaultElevation = 6.dp, // 静止状态的阴影高度 pressedElevation = 8.dp, // 可选:按压状态的阴影高度 focusedElevation = 8.dp, // 可选:聚焦状态的阴影高度 hoveredElevation = 8.dp // 可选:悬浮状态的阴影高度 ), onClick = {} // 必须添加,否则按钮禁用,阴影不显示 )
2. 全局/局部主题配置
如果需要让所有ExtendedFloatingActionButton都使用统一的阴影配置,可以通过修改主题中的LocalFloatingActionButtonElevation:
// 局部主题配置示例 CompositionLocalProvider( LocalFloatingActionButtonElevation provides FloatingActionButtonElevation( defaultElevation = 6.dp ), content = { ExtendedFloatingActionButton( text = { Text(text = "Button") }, icon = { Icon(Icons.Filled.Add, contentDescription = "") }, modifier = Modifier.clip(RoundedCornerShape(16.dp)), onClick = {} ) } )
另外需要注意:自定义的RoundedCornerShape不会影响阴影的绘制,阴影会自动跟随按钮的裁剪形状。
内容的提问来源于stack exchange,提问作者wbk727
相关产品推荐
相关产品推荐

