【问题标题】:what is the difference between setImageDrawable and setImageResource when using vector drawable?使用矢量绘图时,setImageDrawable 和 setImageResource 有什么区别?
【发布时间】:2021-03-20 07:12:15
【问题描述】:

我有一个带有渐变标签的 ImageView 和矢量图像。我尝试用几种方法显示图像,它在 Android 21 中产生了不同的结果。 我在我的项目中设置了vectorDrawables.useSupportLibrary = true

  • 使用setImageResource(),矢量图显示成功

    image.setImageResource(R.drawable.xarisanv2_img_success_payment)`
    
  • 使用setImageDrawable(AppCompatResources.getDrawable(),矢量图显示成功

    image.setImageDrawable(AppCompatResources.getDrawable(context, R.drawable.xarisanv2_img_success_payment))
    
  • 使用 setImageDrawable(ContextCompat.getDrawable(xxxx)),应用崩溃

    image.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.xarisanv2_img_success_payment))
    

有人能解释一下这背后发生了什么吗?特别是关于 setImageResource 如何处理带有渐变标签的矢量图像。

【问题讨论】:

  • 感谢@GabrieleMariotti,但它没有提到任何关于 setImageResource 的内容。在 Android API 21 中 setImageResource 如何处理带有渐变标签的矢量图像?

标签: android kotlin


【解决方案1】:

setImageResource() 以资源id (From An Existed Resource File) 作为参数,如R.drawable.xxx,此资源id 为整数值。

setImageDrawable()Drawable 对象为参数,通常该对象由您的代码在运行时创建,但您也可以使用getDrawable(context, R.drawable.xxx) 转换现有的Drawble 资源将文件放入 Drawable 对象中(就像在您的代码中一样),尽管它需要更多代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    相关资源
    最近更新 更多