【发布时间】:2018-08-25 05:11:36
【问题描述】:
我目前正在尝试弄清楚如何使用来自 API 的动态字符串制作文本 bold、Italic 或下划线,必须加粗的文本即将到来如*粗体*,斜体以_斜体_和下划线为#underline#(与Stackoverflow相同的功能)。 成功转换文本后,我也希望删除特殊字符。
来自 API 的文本 - * 我很大胆*,也喜欢看到_我自己和_其他人。
预期的答案 - 我很大胆并且也喜欢看到我自己和其他人。
如果我尝试在粗体之后创建斜体,如果我尝试删除特殊字符,我已经尝试了一些不起作用的代码。
TextView t = findViewById(R.id.viewOne);
String text = "*I am Bold* and _I am Italic_ here *Bold too*";
SpannableStringBuilder b = new SpannableStringBuilder(text);
Matcher matcher = Pattern.compile(Pattern.quote("*") + "(.*?)" + Pattern.quote("*")).matcher(text);
while (matcher.find()){
String name = matcher.group(1);
int index = text.indexOf(name)-1;
b.setSpan(new StyleSpan(Typeface.BOLD), index, index + name.length()+1, SpannableStringBuilder.SPAN_EXCLUSIVE_EXCLUSIVE);
}
t.setText(b);
我不想使用 HTML 标签
【问题讨论】:
-
所以
new StyleSpan(Typeface.ITALIC)不起作用? -
@pskink 如果我不使用粗体,它会起作用,但是当我同时使用粗体和斜体的相同过程时,我无法转换文本。对逻辑有点困惑。
-
投了赞成票!因为它需要努力。请检查答案。
-
@W4R10CK 您是否获得更改以查看更新的答案?
-
@W4R10CK 您是否得到更改以验证解决方案?
标签: android textview android-spannable