如何从资源中设置 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?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 的 XMPP 框架中设置资源

如何以编程方式在android资源文件中设置项目windowBackground

使用 MvvmCross 时如何在 WPF App.xaml 中设置资源? (MaterialDesignInXamlToolkit)

如何在 OAuth2 资源服务器中设置自定义 403 响应?

如何在资源管理器的文本区域中设置占位符的样式?

如何在 Xamarin 表单中设置工具栏项的图标