在SpannableStringBuilder和DynamicLayout中修改Drawable

时间:2015-03-16 08:26:28

标签: android android-drawable spannablestring imagespan

我试图隐藏SpannableStringBuilder中的笑脸(在DynamicLayout中使用)。 起初我试过

ImageSpan[] spans = spannable.getSpans(0, length, ImageSpan.class);
spans[0].getDrawable().setAlpha(0);

它不起作用。 我也试过

ImageSpan[] spans = spannable.getSpans(0, length, ImageSpan.class);
spans[0].getDrawable().setVisible(false, true);

也没用。

下一个代码确实有效,但它没有保留drawable的大小,所以笑脸周围的文字开始“跳”,这是不正确的。

ImageSpan[] spans = spannable.getSpans(0, length, ImageSpan.class);
spannable.removeSpan(spans[0]);

潜在地,我可以重新绘制可绘制的,但这是一项昂贵的操作。为什么不绘制可更新?我错过了什么?

提前致谢。

1 个答案:

答案 0 :(得分:0)

好的,在我的base drawable类中,我实现了setAlpha方法,在其中我更改了paint对象。之后我重新验证了drawable的视图。之后,我的drawable类中的draw方法被执行并且alpha值改变