【发布时间】:2010-11-29 06:45:45
【问题描述】:
我有一个来自网络服务的文本块,根据我预定义的一些标签,我想在将文本设置为我的 TextView 之前设置文本样式。对于粗体、斜体和下划线,我可以使用 replaceAll 命令轻松完成:
PageText = PageText.replaceAll("\\*([a-zA-Z0-9]+)\\*", "<b>$1</b>");
PageText = PageText.replaceAll("=([a-zA-Z0-9]+)=", "<i>$1</i>");
PageText = PageText.replaceAll("_([a-zA-Z0-9]+)_", "<u>$1</u>");
txtPage.setText(Html.fromHtml(PageText), TextView.BufferType.SPANNABLE);
所以,要加粗一个单词,用 * 括起来,斜体用 _ 括起来。
但是,对于删除线,Html.fromHtml 不支持“strike”标签,所以不能以同样的方式完成。我已经看到使用 Spannable 为文本的一部分设置样式的示例,但它需要位置数字。所以,我想我可以遍历文本,搜索 - (代表罢工的标签),然后搜索下一个,跨越中间的文本,并重复所有这样的字符串。它最终将是 10 行循环代码,而其他代码只有 1 行,所以我想知道是否有更优雅的解决方案。
【问题讨论】: