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
相关产品推荐
相关产品推荐

