当我插入 fontSize = dimensionResource(id = R.dimen.textLabelTextSize) 其中尺寸或 54sp 或 60sp 取决于设备时,我在 Text() 上收到错误“以下任何函数都不能使用提供的论据。”但是当我输入一个像 54sp 这样的硬编码值时就很好了。奇怪的是填充修饰符维度资源(在 dp 中)工作正常。
Text(
text = textLabelItem.textLabel,
modifier = Modifier
.padding(
start = dimensionResource(id = R.dimen.textLabelPaddingVertical),
top = dimensionResource(id = R.dimen.textLabelPaddingHorizontalTop),
end = dimensionResource(id = R.dimen.textLabelPaddingVertical),
bottom = dimensionResource(id = R.dimen.textLabelPaddingHorizontalBottom)
)
.background(colorResource(id = R.color.textLabelBg))
.border(
width = 2.dp,
color = colorResource(id = R.color.textLabelBorder),
shape = RoundedCornerShape(8.dp)
),
color = colorResource(id = android.R.color.background_dark),
fontSize = dimensionResource(id = R.dimen.textLabelTextSize),
fontWeight = FontWeight.Bold
)
答案 0 :(得分:1)
发生这种情况是因为函数 dimensionResource
返回一个 Dp
值,而 fontSize
使用 Sp
值。
目前您无法使用它。
答案 1 :(得分:0)
答案很简单,你只是忘了处理 sorted()
的结果。您只需使用它的 dimensionResource
即可将其设为浮动。然后您使用 value
扩展名,您就可以开始了。
我为此创建了自己的扩展程序:
sp
所以用 @Composable
@ReadOnlyComposable
fun fontDimensionResource(@DimenRes id: Int) = dimensionResource(id = id).value.sp
代替 dimensionResource(R.dimen.your_font_size)
最终解决方案:
fontDimensionResource(R.dimen.your_font_size)