Compose 中的自定义图标

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

我有一个用于动态定义菜单的数据类。

data class ActionItemSpec(
    val contentDescription: String,
    val icon: ImageVector,
    val onClick: () -> Unit
)

我的问题是,当使用标准图标时,它可以完美地工作,但是这个类的问题是它不能接受其他任何东西,比如自定义的可绘制对象。

如何从自定义可绘制对象创建 ImageVector?你可以撰写吗?

android vector icons drawable android-jetpack-compose
2个回答
7
投票

是的,对于自定义图标,您可以在 ImageVector 对象上调用方法 vectorResource() 并传递您的矢量资源的 id。

ImageVector.vectorResource(id = R.drawable.myVectorAsset)

我有一个类似的情况,我需要为底部导航栏创建一个自定义图标,这就是我的制作方法:

data class BottomNavItem(
    val name: String,
    val route: String,
    val icon: ImageVector
)

BottomNavItem(
    name = getString(R.string.destination_home),
    route = home,
    icon = ImageVector.vectorResource(id = R.drawable.ic_my_home_icon))

0
投票

您可以使用

Valkyrie
将 xml 资源转换为 Compose ImageVector

并将其设置为

Icon

Icon(imageVector = YourIcon, contentDescription = null)
© www.soinside.com 2019 - 2024. All rights reserved.