【发布时间】:2016-07-17 23:08:22
【问题描述】:
我需要创建一个自定义的Span,以像源代码一样呈现其内容。这是我要实现的目标的示例。假设我们有以下文本,其中我使用方括号注释了自定义跨度的开始和结束:
Some text [some\nmulti line\ntext] some more text
前缀(“Some text”)和后缀(“some more text”)应该正常渲染,但是自定义span应该像代码块一样渲染:
some
multi line
text
我一直在考虑为此使用ReplacementSpan,因为我之前曾使用它来创建各种有趣的自定义跨度,但对于这种情况,我无法让它做我想做的事情。
不知何故,我需要让我的 span 来渲染一个完整的图形块,占据容器的整个宽度。甚至有可能做到这一点吗?
【问题讨论】:
-
使用
android.text.style.LineBackgroundSpan -
@pskink 我已经尝试过了,但是虽然这可以让我绘制背景,但它会将我的跨度分成三个单独的绘制调用(我假设换行符会导致源文本被分割成甚至在
LineBackgroundSPan有机会查看文本之前就将字符串分开)? -
是的,它“将您的跨度分解为三个单独的绘图调用”,这有什么问题?你想在“draw”方法中实现什么?
-
textview.setSingleLine(false); textview.setText("some\n"+"多行\n"+"text");
-
@pskink 这是一个问题,因为我想在整个块周围绘制一个框。
标签: android spannablestring spannable