gpt4 book ai didi

java - 使用可扩展字符串设置两个第一个单词的样式

转载 作者:太空宇宙 更新时间:2023-11-04 13:42:42 25 4
gpt4 key购买 nike

我试图为字符串中的前两个单词提供一些样式效果(如粗体、删除线)。我这样做的方式受到了这个thread的启发。 .

String[] tokens = text.split(" ");
String twoFirstWords = tokens[0] + " " + tokens[1]; //two first words

String content = text.replaceFirst(twoFirstWords, " "); //the rest

SpannableStringBuilder builder = new SpannableStringBuilder();
SpannableString span1 = new SpannableString(twoFirstWords);
SpannableString span2 = new SpannableString(content);
span1.setSpan(new StyleSpan(Typeface.BOLD), 0, twoFirstWords.length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
span1.setSpan(new StrikethroughSpan(),0, twoFirstWords.length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE );
span1.setSpan(new CustomTypefaceSpan("", fontFirst), 0, twoFirstWords.length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
span2.setSpan(new CustomTypefaceSpan("", fontContent), 0, content.length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);

builder.append(span1);
builder.append(span2);
textView.setText(builder, TextView.BufferType.SPANNABLE);

根据上面的代码,我试图仅对前两个单词赋予粗体和删除线效果。但是,这些效果也适用于内容。

当我为字符串中的最后两个单词应用样式时,此代码工作正常,但在使用第一个单词时一直失败。我怀疑这是因为 .SetSpan 的开始和结束错误(或者情况可能并非如此)...我仍然对找到开始和结束的正确索引一无所知。任何人都可以帮助我解决这个问题吗?谢谢。

最佳答案

是的,你可以做到这一点。我这样做的方式(因为它相对简单)就是使用 HTML。所以你可以做这样的事情......

TextView textView = (TextView) findViewById(R.id.textView); 

textView.setText(Html.fromHtml("<b><strike>" + twoFirstWords
+ "</b></strike>" + restOfTheSentence));

CommonsWare 有一篇很棒的博客文章,列出了它支持的所有标签,您可以找到 here

关于java - 使用可扩展字符串设置两个第一个单词的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31111331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com