如何从资源设置 ImageVector?

How to set an ImageVector from resource?

我正在尝试为底部导航设置图标,如下所示:

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。 感谢帮助,谢谢。 :)

是的。 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.*** 的可绘制资源,额外注释会引发警告

试试这个

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))
}