Sal*_*alw 8 resources android spannable
我正在设置Span文本的一部分.跨度本身运作良好.然而,文本是由String.formatfrom 创建的Resources,我不知道,start并且end我将要将Span设置为文本的一部分.
我tryed使用自定义HTML代码strings.xml,但无论是getText或getString删除它们.我可以用这样的事情getString(R.string.text, "<nb>" + arg + "</nb>"),那么Html.fromHtml(),因为arg正是在这里我想设置的跨度.
我看到这种使用文本格式化的方法"normal text ##span here## normal text".它解析字符串删除标签并设置Span.
我的问题是,是否有更好的方法来完成将Span设置为格式化字符串,"something %s something"或者我应该使用上述方法之一?
getText()将返回SpannedString包含在strings.xml 中定义的格式的对象。我创建了一个自定义版本String.format,它将保留格式字符串中的任何跨度,即使它们包含格式说明符(SpannedString参数中的跨度也被保留)。像这样使用它:
Spanned toDisplay = SpanFormatter.format(getText(R.string.foo), bar, baz, quux);
Run Code Online (Sandbox Code Playgroud)
我通过引入TaggedArg类解决了这个问题,该类的实例扩展为<tag>value</tag>. 然后我创建了负责读取包含标签的文本并用跨度替换这些标签的对象。不同的span在map tag->factory中注册。
有一个小惊喜。如果您有类似的文本"<xx>something</xx> something",Html.fromHtml请将此文本读作"<xx>something something</xx>"。我必须<html>在整个文本周围添加标签来防止这种情况发生。
| 归档时间: |
|
| 查看次数: |
3402 次 |
| 最近记录: |