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

如何在Jetpack Compose中设置ExtendedFloatingActionButton默认阴影高度

在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:30:52