我有两个ImageButton,每个都有不同的图像。我需要找到Java代码,该代码本质上允许ImageButton2显示ImageButton1的图像。我一直在四处闲逛,但我认为魔术命令应该是这样的:

ImageButton2.setImageResource( ImageButton1.getImageAlpha() );

ImageButton2.setImageResource( ((BitmapDrawable) ImageButton1.getDrawable()).getBitmap() );

int id = ImageButton1.getId();
ImageButton2.setImageResource( R.drawable.(id) );


但是这些都不能编译。答案必须是这样的:

ImageButton2.setImageResource( ImageButton1.getImageResource() );


有人看到解决方案了吗?我整天都在努力。谢谢。

最佳答案

可以通过以下方式实现:

Drawable drawable = imageButton1.getDrawable(); Drawable mutatedDrawable = drawable.mutate(); imageButton2.setImageDrawable(mutatedDrawable);


默认情况下,可绘制对象是共享的。如果要使一个可绘制对象所做的更改不影响附加到另一个视图的同一可绘制对象,则必须显式mutate()绘制对象。

07-27 21:57