我整天都在处理这个错误,无法解决。我有一个自定义ImageView
,如下所示:
public class UserDirectionView extends ImageView {
private float mDirection;
private Drawable arrow;
private boolean mCorrectPosition;
// constructors...
@Override
protected void onDraw(Canvas canvas) {
if (arrow == null) {
arrow = getDrawable();
arrow.setBounds(0, 0, getWidth(), getHeight());
// setImageResource(resId); // Not working
}
canvas.save();
canvas.rotate(mDirection, getWidth() / 2, getHeight() / 2);
arrow.draw(canvas);
canvas.restore();
}
public void updateDirection(float direction, boolean correctPos) {
mDirection = direction;
mCorrectPosition = correctPos;
invalidate();
}
}
我正在尝试使用setImageResource(resId)
更改imageResource,但一切都没有发生。我试图在onDraw
内部以及我的课堂外调用该方法,如下所示:
UserDirectionView mUserHint = findview....;
mUserHint.setImageResource(resId);
但图像没有变化。
我也尝试拨打invalidate
,但没有工作。
如何以动态方式更改图像资源?
答案 0 :(得分:2)
您错过了super.onDraw(canvas)
调用,该调用负责更新drawable。添加
onDraw
在std::experimental::filesystem