使用Jetpack Compose的LargeFloatingActionButton需手动设置图标尺寸吗?
默认情况下,Compose的LargeFloatingActionButton确实不会自动为内部的Icon组件设置符合Material Design 3规范的36dp尺寸,这是当前组件实现的现状,并非你遗漏了配置。
问题还原
使用默认代码时,图标会以常规FAB的24dp尺寸显示,视觉上与Large FAB的容器不协调:
对应代码:
Scaffold( ... floatingActionButton = { LargeFloatingActionButton(onClick = { /*TODO*/ }) { Icon(Icons.Filled.Add, null) } } ) { contentPadding -> // Screen content ... }
正确解决方式
根据Material Design 3规范,Large FAB的图标尺寸应为36dp,你手动设置Modifier.size(36.dp)的做法是符合规范的正确操作:
对应代码:
LargeFloatingActionButton(onClick = { /*TODO*/ }) { Icon(Icons.Filled.Add, null, modifier = Modifier.size(36.dp)) }
补充说明
Compose的组件设计偏向灵活性,LargeFloatingActionButton主要负责提供符合规范的容器大小、阴影等样式,内部内容的尺寸交给开发者自定义。虽然从"开箱即用"的预期来说,官方应该默认适配图标尺寸,但当前版本确实需要手动指定。你也可以通过引用Material Theme中的自定义常量来让代码更规范,比如:
// 若项目中已定义对应尺寸常量 Modifier.size(MaterialTheme.dimens.fabLargeIconSize)
如果没有自定义常量,直接使用36.dp完全符合官方规范,无需担心合理性。
内容的提问来源于stack exchange,提问作者Mikhail
相关产品推荐
相关产品推荐

