Android jetpack compose - 可绘制颜色

问题描述 投票:0回答:2

我遇到以下问题。我在使用 Jetpack compose 构建的项目中添加了一些矢量可绘制图像。我通过设置覆盖可绘制的颜色

android:fillColor="?colorPrimary"

但是,之前的解决方案虽然适用于普通的 Android 项目,但在 Jetpack compose 上工作时则不然。

当然,我已经用我的颜色/拼写错误/形状初始化了一个材质主题。

有什么建议吗?

致以诚挚的问候!

android android-jetpack-compose
2个回答
4
投票

我也遇到过类似的问题,其中 compose 与属性配合得不好。它更喜欢通过 colorResource(R.color.colorName) 访问。

您可能正在寻找以下任一实现:

Icon(
 Icons.Filled, 
 "contentDescription",
 tint = MaterialTheme.colors.secondary
)

Image(
    painter = painterResource(R.drawable.resourceName), 
    contentDescription = "contentDescription", 
    colorFilter = ColorFilter.tint(Color.myColor)
)

更新:

我实际上发现了与字体属性类似的东西。您可能想尝试这样的事情:

fun getFontFromAttribute(resId: Int, context: Context): Typeface? =
    context.obtainStyledAttributes(R.style.MYSTYLE, intArrayOf(resId))
        .use { array ->
            val resource = array.getResourceId(array.getIndex(0), 0)
            if (resource == 0) {
                null
            } else {
                ResourcesCompat.getFont(context, resource) ?: Typeface.SANS_SERIF
            }
        }

0
投票

我们可以创建 ColorDrawable 并将其转换为 ImageBitmap。

Image(
        modifier = Modifier.matchParentSize(),
        bitmap = ColorDrawable(Color.Black.toArgb()).toBitmap(10, 10).asImageBitmap(),
        contentScale = ContentScale.FillBounds,
        contentDescription = null
    )
© www.soinside.com 2019 - 2024. All rights reserved.