我遇到以下问题。我在使用 Jetpack compose 构建的项目中添加了一些矢量可绘制图像。我通过设置覆盖可绘制的颜色
android:fillColor="?colorPrimary"
但是,之前的解决方案虽然适用于普通的 Android 项目,但在 Jetpack compose 上工作时则不然。
当然,我已经用我的颜色/拼写错误/形状初始化了一个材质主题。
有什么建议吗?
致以诚挚的问候!
我也遇到过类似的问题,其中 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
}
}
我们可以创建 ColorDrawable 并将其转换为 ImageBitmap。
Image(
modifier = Modifier.matchParentSize(),
bitmap = ColorDrawable(Color.Black.toArgb()).toBitmap(10, 10).asImageBitmap(),
contentScale = ContentScale.FillBounds,
contentDescription = null
)