GradientDrawable setStroke在Android Lollipop上无法正常工作

3

我有一个Drawable对象,它被放置在ImageView中。我需要在运行时修改这个Drawable对象,以便为用户的级别提供自定义颜色。在Android 20以下版本中,修改此对象的方法可以正常工作,但在20以上的版本中,该对象无法一致地更新。

具体的修改方法如下:

void setColor(int color) {
    GradientDrawable drawable = (GradientDrawable) mImageView.getDrawable().mutate();
    drawable.setStroke(14, color);
    drawable.invalidateSelf(); // make sure we redraw
}

如我所说,在Android 20之前,这个方法可以正常工作,但在Android 20之后,描边效果不再生效。是否有新的方法或者我忘记了什么?


你尝试过在API 22 / L MR1上吗?这可能是初始L版本特有的一个错误。 - alanv
1个回答

1
你应该使视图无效。
mImageView.invalidate();

在代码的哪个点应该发生这种情况?无效化似乎并没有帮助我解决类似的问题。 - T.Woody

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接