Jetpack Compose Material主题onSurface颜色不生效问题求助
问题原因
Jetpack Compose 的 Surface 组件只有在显式传入 color 参数时,才会自动根据传入的颜色值,匹配主题中对应的 onXXX 色值作为内容区域的 LocalContentColor 提供给子组件调用。Text 组件默认使用当前节点树的 LocalContentColor 作为文本颜色。
你未给 Surface 设置 color 时,它会使用默认的 Color.Unspecified 作为参数值,此时不会自动关联你配置的 onSurface 色值,Text 就会使用 fallback 的黑色作为文本色。
你主动设置 color = MaterialTheme.colors.primary 时功能正常,正是因为显式传值后触发了 Surface 自动匹配 onPrimary 色值的逻辑。
解决方案
两种方案二选一即可实现预期效果:
- 显式给
Surface设置背景色为主题的 surface 色,触发自动匹配onSurface的逻辑:
Surface( color = MaterialTheme.colors.surface ) { Text(text = "Hello!!", modifier = Modifier.padding(16.dp)) }
- 直接手动指定
Text的颜色为主题的onSurface色:
Surface { Text( text = "Hello!!", modifier = Modifier.padding(16.dp), color = MaterialTheme.colors.onSurface ) }
内容的提问来源于stack exchange,提问作者Gui Silva
相关产品推荐
相关产品推荐

