Android 指明;删除线“;在文本视图文本的一部分上
我有一个来自Web服务的文本块,根据我预定义的一些标记,我想在将文本设置为TextView之前设置文本样式。对于粗体、斜体和下划线,我可以使用replaceAll命令轻松完成这项工作:Android 指明;删除线“;在文本视图文本的一部分上,android,textview,Android,Textview,我有一个来自Web服务的文本块,根据我预定义的一些标记,我想在将文本设置为TextView之前设置文本样式。对于粗体、斜体和下划线,我可以使用replaceAll命令轻松完成这项工作: PageText = PageText.replaceAll("\\*([a-zA-Z0-9]+)\\*", "<b>$1</b>"); PageText = PageText.replaceAll("=([a-zA-Z0-9]+)=", "<i>$1</
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);
PageText=PageText.replaceAll(“\\*([a-zA-Z0-9]+)\\*”,“$1”);
PageText=PageText.replaceAll(“=([a-zA-Z0-9]+)=”,“$1”);
PageText=PageText.replaceAll(“zA-zA-Z0-9]+)zA,“$1”);
setText(Html.fromHtml(PageText),TextView.BufferType.Spanable);
所以,要加粗一个单词,用*括起来,斜体字用u括起来
但是,对于删除线,Html.fromHtml不支持“strike”标记,因此不能以相同的方式执行。我见过使用Spanable在一段文本上设置样式的示例,但它需要位置号。因此,我想我可以在文本中循环,搜索-(表示罢工的标记),然后搜索下一个,跨越中间的文本,并重复所有此类字符串。它最终将是10行循环代码,而其他代码则是1行,因此我想知道是否有更优雅的解决方案。如果只是文本视图,则可以使用绘制标志来完成
TextView tv=(TextView) v.findViewById(android.R.id.text1);
tv.setPaintFlags(tv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
您确定
Html.fromHtml
不支持
?它在中列出,看起来它并没有得到真正的支持,至少它在Android 3.1上不起作用
@RMS2如果文本很小,您可以将其拆分为两个或三个单独的文本视图,并仅将该标志应用于您想要的文本,而不适合长文本;(这里是一个使用自定义标记处理程序的解决方案,您必须将其传递到Html.fromHtml()
@Suresh解决方案适用于删除整个文本视图,但如果只删除部分文本,请使用下面的代码
tvMRP.setText(text, TextView.BufferType.SPANNABLE);
Spannable spannable = (Spannable) tvMRP.getText();
spannable.setSpan(new StrikethroughSpan(), 3, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
这里的
text
是我们希望在TextView中显示的文本,3
是删除线将从何处开始的字符数(从0开始)。您可以使用自定义的标记处理程序来执行此操作,例如:
而TagHandler
实现了以下方法:
public void handleTag(boolean opening, String tag, Editable output,
XMLReader xmlReader) {
if(tag.equalsIgnoreCase("strike") || tag.equals("s")) {
processStrike(opening, output);
}
}
....
谢谢,但这似乎适用于整个文本。我只需要删除文本的一部分-任何被连字符包围的单词,例如-这个-或-那个-。RMS2您有没有找到解决您的问题的方法?请发布它。@Sandiskp查看我的回答谢谢重播,但我收到的回复是这样的5000 10000 50%折扣计划使用Html.fr设置omhtml(字符串)如何处理请帮助我只有一个textview标签在android中不受支持,我已经检查到ICS 4.0.4或在Jelly bean中不受支持。我将实际价格、报价和折扣百分比作为一个字符串值,并且也有一个文本视图。根据您如何获得值,您可以拆分值,为不同的值应用单独的可设置条带,然后将其设置为文本。我个人没有这样做,但它应该会起作用。@RohanKandwal谢谢。我怎样才能通过线条颜色更改罢工?@Shayan_Aryan我不确定,你能试试这个吗。非常感谢。
public void handleTag(boolean opening, String tag, Editable output,
XMLReader xmlReader) {
if(tag.equalsIgnoreCase("strike") || tag.equals("s")) {
processStrike(opening, output);
}
}
....