【问题标题】:How to set an ImageVector from resource?如何从资源中设置 ImageVector?
【发布时间】: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。 感谢您的帮助,谢谢。 :)

【问题讨论】:

    标签: android kotlin android-jetpack-compose android-resources


    【解决方案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))
      }
      

      【讨论】:

      • 谢谢。真的很感激,谢绝。
      猜你喜欢
      • 2011-06-24
      • 1970-01-01
      • 2012-03-24
      • 2014-03-10
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多