You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中如何对比ImageView的Tag与另一个ImageView的BackgroundResource?

关于ImageView Tag与BackgroundResource对比的问题解答

咱们先把这两个问题拆开来聊清楚哈:

1. 如何对比ImageView的Tag与它自己的BackgroundResource?

首先得明确两个属性的本质:

  • ImageView.getTag() 返回的是Object类型,你可以往里面存任意对象(比如字符串、整数、自定义类实例都可以)
  • ImageView.getBackgroundResource() 返回的是int类型的资源ID(比如R.drawable.bg_red这种)

要实现对比的前提是:你给ImageView设置的Tag必须是它对应的背景资源ID(也就是Integer类型的资源ID)。满足这个前提后,就可以这样写代码:

// 先给ImageView设置Tag为目标背景资源ID
imageView.setTag(R.drawable.my_target_bg);

// 对比Tag与BackgroundResource
if ((Integer) imageView.getTag() == imageView.getBackgroundResource()) {
    // 两者匹配时执行操作
}

这里要注意:getTag()返回的是Object,必须强制转换成Integer后再和int类型的资源ID对比(Java会自动拆箱,用==没问题,也可以用equals())。如果你的Tag存的不是资源ID,那这种对比就没有实际意义哦。

2. 能否用if (imageview1.getTag() == imageview2.getbackground())来对比?

答案是绝对不行,原因很直观:

  • imageview2.getBackground() 返回的是Drawable对象,而非资源ID
  • 如果imageview1.getTag()存的是资源ID(Integer类型),一个是Integer对象、一个是Drawable对象,类型完全不同,==对比的是对象引用,肯定不相等;就算Tag存的是Drawable,两个ImageView的Drawable引用也不一定相同(比如同一个资源ID可能生成不同的Drawable实例)

正确的做法是,获取imageview2的背景资源ID,再和imageview1的Tag对比(前提还是Tag存的是资源ID):

if ((Integer) imageview1.getTag() == imageview2.getBackgroundResource()) {
    // 执行操作
}

内容的提问来源于stack exchange,提问作者Shah Hussain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:18:09