如何从资源中设置 ImageVector?
Posted
技术标签:
【中文标题】如何从资源中设置 ImageVector?【英文标题】:How to set an ImageVector from resource? 【发布时间】:2022-01-24 07:37:27 【问题描述】:我正在尝试为底部导航设置一个图标,如下所示:
sealed class Screen(val route: String, val label: String, val icon: ImageVector)
object Home : Screen("home", "Home",R.drawable.outline_home_black_24)
object History : Screen("history", "History", R.drawable.outline_history_black_24)
但它说我需要将参数切换为 Int。 感谢您的帮助,谢谢。 :)
【问题讨论】:
【参考方案1】:是的。 R.drawable.outline_home_black_24
之类的引用不是实际的 ImageVector
,而是 Int 引用以帮助将它们放入代码中。要获取实际图像,您应该使用 ContextCompat.getDrawable(context, R.drawable.***)
之类的东西来获取实际的 Drawable
文件。这意味着正确的用法应该是
sealed class Screen(val route: String, val label: String, @DrawableRes val icon: Int)
如果未传递类似于R.drawable.***
的可绘制资源,则额外的注释会引发警告
【讨论】:
【参考方案2】:试试这个
sealed class Screen(val route: String, val label: String, val icon: ImageVector)
object Home : Screen("home", "Home", painterResource(id = R.drawable.outline_home_black_24))
object History : Screen("history", "History", painterResource(id = R.drawable.outline_history_black_24))
【讨论】:
谢谢。真的很感激,谢绝。以上是关于如何从资源中设置 ImageVector?的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式在android资源文件中设置项目windowBackground
使用 MvvmCross 时如何在 WPF App.xaml 中设置资源? (MaterialDesignInXamlToolkit)