Android Jetpack Compose中Icon与Image的区别是什么?
Jetpack Compose 中 Icon 与 Image 的核心区别
你提到的「Icon 用于矢量图像、Image 用于位图」是常见的刻板印象,二者的使用边界并没有严格按照资源类型划分,核心差异体现在定位和默认行为上:
- 定位差异
Icon是面向Material Design图标场景封装的专用组件,设计初衷就是用来展示功能类图标,比如操作按钮的标识、列表项的前置标识、导航栏入口标识等Image是通用图片渲染组件,没有场景限制,所有需要展示图片的场景(头像、内容插图、海报等)都可以使用
- 资源支持范围
- 二者都同时支持矢量图(
VectorDrawable、ImageVector)和位图(Bitmap、png/jpg格式的drawable等),不存在资源类型的强制使用限制 Icon内置默认着色逻辑:默认会将整个图标内容着色为LocalContentColor.current,也就是和周围文本的颜色保持一致,符合功能图标跟随主题色彩的需求,不需要额外配置Image不会对图片内容做默认着色,会完整还原资源本身的所有色彩
- 二者都同时支持矢量图(
- 默认配置差异
Icon自带默认24dp的尺寸,符合Material Design的标准图标规范,同时默认支持和文本基线对齐,适合和文本混排的场景Image没有预设默认尺寸,默认按照原始资源大小展示,同时内置了丰富的contentScale缩放/裁剪配置,适配不同尺寸容器下的图片展示需求
使用建议:如果要展示的是单色功能类图标,优先用
Icon,可以省掉尺寸、配色对齐的额外配置;如果要展示彩色矢量图、照片类位图,或是对缩放裁剪有自定义需求,优先用Image。
内容的提问来源于stack exchange,提问作者dzyubaka
相关产品推荐
相关产品推荐

