我有一个文本块来自webservice,根据我预定义的一些标签,我想要样式的文本,然后将其设置到我的TextView。对于粗体,斜体和下划线,我可以很容易地使用replaceAll命令:
PageText = PageText.replaceAll("\\*([a-zA-Z0-9]+)\\*", "$1");
PageText = PageText.replaceAll("=([a-zA-Z0-9]+)=", "$1");
PageText = PageText.replaceAll("_([a-zA-Z0-9]+)_", "$1");
txtPage.setText(Html.fromHtml(PageText), TextView.BufferType.SPANNABLE);
所以,要加粗字,用*括起来,用斜体表示,用_括起来。
但是,对于删除线,Html.fromHtml不支持“strike”标签,因此它不能这样做。我看过使用Spannable在一段文本上设置样式的例子,但它需要位置数。所以,我想我可以循环遍历文本,搜索 – (代表罢工的标签),然后搜索下一个,跨越中间的文本,并重复所有这样的字符串。它最终将是10行循环代码,而不是其他的1,所以我想知道是否有一个更优雅的解决方案。