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

Android中如何重置ImageView资源?动态切换图片旧图未清除求助

解决ImageView切换图片时旧图覆盖新图的问题

嘿,我明白你遇到的麻烦了——切换状态时步行图居然盖在了跑步图上面,这确实挺闹心的。其实这种情况大多是因为ImageView的旧资源没有被及时清除,导致新图绘制时和旧图叠加了。试试下面这些办法:

方法一:先清除现有资源再设置新图

最直接的方式就是先把ImageView的内容清空,再设置新的图片资源。你可以用这两种方式清空:

方式1:设置为透明背景

// 先将ImageView设置为透明,清除旧图
status_image.setImageResource(android.R.color.transparent)
// 再根据状态切换目标图片
status_image.setImageResource(if(runningState == RunningState.FAST) R.drawable.ic_run_fast else R.drawable.ic_walk)

方式2:直接置空Drawable

// 清空ImageView的Drawable
status_image.setImageDrawable(null)
// 再设置新的图片资源
status_image.setImageResource(if(runningState == RunningState.FAST) R.drawable.ic_run_fast else R.drawable.ic_walk)

方法二:强制触发重绘

如果清空资源的方式还是不行,你可以在设置新图后强制让ImageView重绘自己,确保旧图被彻底刷新:

status_image.setImageResource(if(runningState == RunningState.FAST) R.drawable.ic_run_fast else R.drawable.ic_walk)
// 强制重绘,更新视图
status_image.invalidate()

额外小提醒

另外你也可以检查下ImageView的ScaleType设置,如果是比如fitXY这种拉伸模式,有时候也可能导致图片叠加的视觉错觉,调整成centerInside或者fitCenter说不定也能解决问题哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:08:45