文本可组合维度资源不能用作 fontSize 参数

时间:2021-05-13 15:43:00

标签: android kotlin android-resources android-jetpack-compose

当我插入 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
            )

2 个答案:

答案 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)