我有一个用于动态定义菜单的数据类。
data class ActionItemSpec(
val contentDescription: String,
val icon: ImageVector,
val onClick: () -> Unit
)
我的问题是,当使用标准图标时,它可以完美地工作,但是这个类的问题是它不能接受其他任何东西,比如自定义的可绘制对象。
如何从自定义可绘制对象创建 ImageVector?你可以撰写吗?
是的,对于自定义图标,您可以在 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))
您可以使用
Valkyrie将 xml 资源转换为 Compose
ImageVector
并将其设置为
Icon
Icon(imageVector = YourIcon, contentDescription = null)