在 SpannableStringBuilder 和 DynamicLayout 中修改 Drawable



我试图在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);

也没用。

下一个代码确实有效,但它不保留可绘制对象的大小,因此笑脸周围的文本开始"跳跃",这是不正确的。

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

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

提前谢谢。

好的,在我的基本可绘制类中,我实现了更改 paint 对象的 setAlpha 方法。之后,我重新验证了可绘制对象的视图。之后,我的可绘制类中的 draw 方法被执行并且 alpha 值发生变化

相关内容

  • 没有找到相关文章

最新更新