在 SpannableStringBuilder 和 DynamicLayout 中修改 Drawable
Modify Drawable inside SpannableStringBuilder and DynamicLayout
我试图在 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);
也没用。
下一个代码确实有效,但它不保留可绘制对象的大小,因此笑脸周围的文本开始 "jump",这是不正确的。
ImageSpan[] spans = spannable.getSpans(0, length, ImageSpan.class);
spannable.removeSpan(spans[0]);
可能,我可以重新绘制可绘制对象,但这是一项昂贵的操作。为什么可绘制对象不更新?我错过了什么?
提前致谢。
好的,在我的基础可绘制对象 class 中,我实现了 setAlpha
方法,我在其中更改了绘制对象。之后,我重新验证了可绘制对象所在的视图。之后我的 drawable class 中的 draw
方法被执行并且 alpha 值发生变化
我试图在 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);
也没用。
下一个代码确实有效,但它不保留可绘制对象的大小,因此笑脸周围的文本开始 "jump",这是不正确的。
ImageSpan[] spans = spannable.getSpans(0, length, ImageSpan.class);
spannable.removeSpan(spans[0]);
可能,我可以重新绘制可绘制对象,但这是一项昂贵的操作。为什么可绘制对象不更新?我错过了什么?
提前致谢。
好的,在我的基础可绘制对象 class 中,我实现了 setAlpha
方法,我在其中更改了绘制对象。之后,我重新验证了可绘制对象所在的视图。之后我的 drawable class 中的 draw
方法被执行并且 alpha 值发生变化