gpt4 book ai didi

android - Jetpack 撰写 : Custom VectorAsset Icon object similar to built-in `Icons.Default`

转载 作者:行者123 更新时间:2023-12-04 11:42:48 25 4
gpt4 key购买 nike

这似乎是从 res 中的 Android 矢量资源加载自定义图标的唯一方法。文件夹是在 @Composable 内进行使用 vectorResource(R.drawable.myVectorName) 的函数方法。
这很好,但我喜欢获取 VectorAssets 的语法对于Icon(asset: VectorAsset)类,看起来像 Icon(Icons.Default.Plus) .
它看起来像 vectorResource()方法使用称为 loadVectorResource() 的内部方法,它用来读取构成矢量 Assets 文件的实际 XML 文件的方法也是内部的。
我将如何创建像 MyAppIcons.Default.SomeIcon 这样的对象在 Jetpack Compose 中?
编辑
所以,我已经找到了一个解决方案。但是,我自己对内置 Icon() 进行扩展/重载会很好。功能,但我不确定是否有适当的方法来做到这一点。

最佳答案

原来我没有用我的大脑。答案很简单。
要点是,Icon()是一个可组合的函数,这意味着当然可以在那里使用 vectorResource()。
所以,正确的方法已经不是什么 secret 了……是自己制作MyAppIcon()组件,请调用 vectorResource()然后返回一个正常的 Icon() ,像这样:
正确方式

@Composable
fun MyAppIcon(
resourceId: Int,
modifier: Modifier = Modifier,
tint: Color = AmbientContentColor.current
) {
Icon(
asset = vectorResource(id = resourceId),
modifier = modifier,
tint = tint
)
}
然后,您可以在其他地方创建一个对象,如下所示:
object MyAppIcons {
val SomeIcon = R.drawable.someIcon
val AnotherIcon = R.drawable.anotherIcon
}
当你把两者放在一起时,你可以像这样使用它:
MyAppIcon(MyAppIcons.SomeIcon)
我希望谷歌很快就会添加这个覆盖,允许我们传递资源 ID。

关于android - Jetpack 撰写 : Custom VectorAsset Icon object similar to built-in `Icons.Default` ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64700145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com