android - 在 TextView 文本的一部分上指定 "strikethrough"

标签 android textview

我有一个来自网络服务的文本 block ,根据我预定义的一些标签,我想在将文本设置为我的 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 行,所以我想知道是否有更优雅的解决方案。

最佳答案

如果它只是 TextView,你可以使用绘制标志来删除

TextView tv=(TextView) v.findViewById(android.R.id.text1);
tv.setPaintFlags(tv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);

关于android - 在 TextView 文本的一部分上指定 "strikethrough",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4301453/

相关文章:

android - 如何配置我的 proguard-project.txt 文件以仅删除日志

android - 在textview中更改可绘制图像的重力

android - Android 设备上的 sencha touch 2.0 应用程序无法正常工作

php - 从 MySQL 访问表到 android

java - com.android.dex.DexException : Multiple dex files define Lorg/hamcrest/Description;

android - 如何离线使用所有 Android gradle 依赖项(maven 文件结构)

android - 字符串.xml : How to remove underlining from the space preceding an <u> tag?

Android - 将自定义可绘制背景设置为 ClickSpan

android - 从 RAW 资源在 TextView 中加载文本

android - 当 TextView 对象的可见性设置为 View.GONE 时,文本会发生什么情况?