1

android ImageSpan,在textview中最后一个位置显示大图很小,但是我的图很大,我想ImageSpan自动下一行。我尝试重载大小方法并将大小更改为等于 textview 宽度,但没有解决问题

SpanabeleString contentSS=new SpanabeleString("hello word on the line [image]");
contentSS.setSpan(imageSpan,"[image]".start,"start".length,xxx);
//imageSpan not support auto new line;

我无法更改内容,我希望使用 imagespan 实现自动下一行功能

4

1 回答 1

0

ImageSpan 是ReplacementSpan的间接子类。显然,流入新行是ReplacementSpan(因此ImageSpan)无法做到的。这是从Florina Muntenescu 撰写的一篇文章在文本上绘制圆角背景的引述,他在博客中介绍了 span 等。(以下引用的重点是我的。)

我们需要与文本一起绘制一个drawable。我们可以实现一个自定义的 ReplacementSpan 来自己绘制背景和文本。但是 ReplacementSpans 不能流入下一行,因此我们将无法支持多行背景。他们宁愿看起来像 Chip,Material Design 组件,其中每个元素都必须适合一行。

我认为这是您遇到的问题。作为一种解决方法,您可以在条件发生时自己插入换行符。我知道没有办法告诉ImageSpan换行。

于 2022-02-26T14:05:08.410 回答