如何从res xml资源设置Jetpack Compose中Text组件的fontSize?
解决Jetpack Compose复用dimen.xml字号的类型不匹配问题
问题核心在于:dimensionResource返回的是Dp类型对象,但Text的fontSize参数需要的是TextUnit(具体为适配文字的Sp类型)——哪怕你在dimen.xml里用的是sp单位,dimensionResource也会统一包装成Dp,直接赋值自然会出现类型不匹配报错。
给你两种可行的解决方法:
直接提取数值转换为Sp
从dimensionResource获取的Dp对象中取出数值,再通过.sp转换成TextUnit:Text( text = stringResource(id = R.string.brandname), fontSize = dimensionResource(id = R.dimen.brandname_size).value.sp )用Compose扩展函数转换
导入dpToSp扩展函数,直接将Dp转成Sp类型的TextUnit:import androidx.compose.ui.unit.dpToSp Text( text = stringResource(id = R.string.brandname), fontSize = dimensionResource(id = R.dimen.brandname_size).dpToSp() )
注意:要确保dimen.xml中对应的尺寸是用sp定义的,比如:
<dimen name="brandname_size">12sp</dimen>
这样转换后的尺寸才符合文字大小的系统适配逻辑。
内容的提问来源于stack exchange,提问作者Sirop4ik
相关产品推荐
相关产品推荐

