Skip to content

Icon 图标 ​

图标基座组件。其他组件(cell / input / navbar 等)的图标都经由本组件的本地注册表渲染。

契约源:lh-ui-core/specs/icon.json · 黄金用例:cases/icon.json(5 条,已翻译为 JVM 单测 + Compose UI Test)

尺寸与色调 ​

三档尺寸映射到 icon.size.* 令牌;色调 default 取 color.text.primary,其余取语义色。

9:41Icon 尺寸
默认色(text.primary)

HTML 模拟预览(Android / Compose 外观),非真机渲染

kotlin
LhIcon(name = "search", size = LhIconSize.large, tone = LhIconTone.primary)

语义色调 ​

9:41Icon 色调
default
primary
success
warning
danger

HTML 模拟预览(Android / Compose 外观),非真机渲染

图标注册表 ​

LhIcons 是本地图标名 → Material ImageVector 的注册表,未登记的图标名返回 null(不绘制,不抛异常):

图标名Material 矢量
search / refresh / check / check-circleSearch / Refresh / Check / CheckCircle
close / clear / star / warningClose / Clear / Star / Warning
info / plus / minusInfo / Add / Remove
arrow-left / arrow-right / chevron-rightArrowBack / ArrowForward / ChevronRight

API ​

Props ​

属性说明类型默认值
name图标名(LhIcons 注册表解析)String—
size图标尺寸LhIconSizeMedium
tone语义色调LhIconToneDefault
contentDescription无障碍描述;默认取图标名,显式传 null 声明为装饰性图标String?name
onClick点击回调;为 null 时不可点击(() -> Unit)?null
modifier修饰符ModifierModifier

LhIconSize ​

值尺寸令牌
Smallicon.size.small(16dp)
Mediumicon.size.medium(20dp)
Largeicon.size.large(24dp)

LhIconTone ​

值颜色令牌
Defaultcolor.text.primary
Primarycolor.primary.default
Successcolor.success.default
Warningcolor.warning.default
Dangercolor.danger.default
Infocolor.info.default
Regularcolor.text.regular
Secondarycolor.text.secondary

令牌对照 ​

令牌用途
icon.size.{small,medium,large}三档尺寸
color.text.primarydefault 色调
color.{primary,success,warning,danger,info}.default语义色调
color.text.{regular,secondary}regular / secondary 色调

黄金用例对照 ​

case id断言本地测试
click-emits-onclick点击触发 onClickLhIconTest.click_emits_onClick(Compose UI Test)
default-tone-uses-text-primary默认色调取主文字色令牌LhIconDefaultsTest.default_tone_uses_text_primary_token
primary-tone-uses-primary-tokenprimary 色调取主色令牌LhIconDefaultsTest.primary_tone_uses_primary_token
small-size-uses-small-token小号取 small 尺寸令牌(反向断言 large 未应用)LhIconDefaultsTest.small_size_uses_small_token
render-emits-icon-command已登记图标名解析为矢量;未登记名不绘制LhIconDefaultsTest.registered_name_resolves_to_vector + LhIconTest.unknown_name_is_safe
bash
./gradlew :components:icon:test                            # JVM 部分
./gradlew :components:icon:connectedAndroidTest            # 交互部分(需设备)