如何从资源设置 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))
}
我正在尝试为底部导航设置图标,如下所示:
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))
}