当前位置: 首页 > 知识库问答 >
问题:

使字符串的一部分在文本视图中粗体显示

呼延英奕
2023-03-14

为什么下面的代码不起作用?它适用于Toast,但不适用于TextView。当我运行程序时,boldName不会显示为粗体,但当我将其设置为祝酒词时,它确实显示为粗体。有人有其他解决办法吗?

String boldName = "<b>" + name + "</b>";
Spanned conBold = Html.fromHtml(boldName);
chosen_contact.setText("You have chosen " + conBold + " as your contact.");

共有2个答案

沈永新
2023-03-14

您可以使用SpanAbleStringBuilder,因为它从SpanEnable和CharSequence实现,您还可以对以下内容执行任何操作

TextView txtTest = (TextView) findViewById(R.id.txt);
String text = "This is an example";    
final SpannableStringBuilder str = new SpannableStringBuilder(text);
str.setSpan(new TypefaceSpan("monospace"), 0, 8, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
str.setSpan(new TypefaceSpan("serif"), 9, 12, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
str.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.white)), 0, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
str.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.grey)), 6, 8, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
str.setSpan(new android.text.style.StyleSpan(android.graphics.Typeface.BOLD), 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
txtTest.setText(str);

我已经添加了colors.xml值

<color name="black">#000000</color>
<color name="grey">#DCDCDC</color>
<color name="white">#FFFFFF</color>
艾志尚
2023-03-14

老实说,我不知道为什么TextView的行为方式是这样的,你可以像现在这样将其全部设置为粗体,但前提是整个TextView都是粗体,而如果其中只有一部分是粗体,并且还有其他字符串,你就不能这样做。

但是,以下代码适用于您:

// a SpannableStringBuilder containing text to display
SpannableStringBuilder sb = new SpannableStringBuilder("You have chosen " + name + " as your contact.");

// create a bold StyleSpan to be used on the SpannableStringBuilder
StyleSpan b = new StyleSpan(android.graphics.Typeface.BOLD); // Span to make text bold

// set only the name part of the SpannableStringBuilder to be bold --> 16, 16 + name.length()
sb.setSpan(b, 16, 16 + name.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); // make first 4 characters Bold

chosen_contact.setText(sb); // set the TextView to be the SpannableStringBuilder
 类似资料:
  • 问题内容: 这是文本: 我想用粗体显示“服务条款”和“请注意:下文所述的HIGO服务条款自以上’最后更新’日期起对正在浏览HIGO网站的任何用户或创建了HIGO网站的任何用户生效。 HIGO帐户在该日期或之后。” 我尝试在uitextview中以编程方式使用uilabel,但无法正常工作: 也尝试使用这些,但不起作用,它仅显示“服务条款”和“最新更新..”,没有显示“请注意…”。 如何加粗字符串的

  • 问题内容: 我可以将a的文本更改为粗体(附加文本),然后再恢复为普通文本,是否仅将粗体文本显示为粗体,其余部分正常显示? 还可以将其内容另存为RTF文档吗? 问题答案: 不,您要找的是JEdi​​torPane 它支持HTML(3.2?),可让您使用(和其他较早的标记)提供富文本格式。 编辑 :根据我上面引用的javadoc,JEditorPane还支持有限的RTF。不要忘记将MIME更改为

  • 问题内容: 为什么以下代码不起作用?它可以在Toast中工作,但不能在TextView中工作。当我运行程序时,boldName不会显示为粗体,但是当我将其设置为Toast时,它会显示为粗体。有人还有其他解决方案吗? 问题答案: 老实说,我不确定为什么TextViews完全按照它们的方式工作,您可以在执行操作时将其全部设置为粗体,但前提是它们的整个TextView都为粗体,但是如果其中一部分是粗体的

  • 问题内容: 我不确定这是否可能,但是我有一种情况,我想在HTML select标记的选项内将文本的 一部分 (不是全部)加粗。 我尝试使用b标签以及强标签,但没有运气(在Chrome上)。CSS可能会起作用,但是由于它在元素级别起作用,所以我不确定该怎么做。 有什么办法吗? 问题答案: 没有; 这是不可能的。 相反,您可以使用Javascript制作伪造的下拉列表。

  • 问题内容: 我在strings.xml的字符串之一中有一个长文本。我要加粗并更改该文本中某些单词的颜色。 我该怎么做? 问题答案: 您基本上可以在字符串资源中使用html标签,例如: 并使用Html.fromHtml或使用spannable,请检查我发布的链接。

  • 本文向大家介绍iOS 在Swift中附加属性字符串和粗体文本,包括了iOS 在Swift中附加属性字符串和粗体文本的使用技巧和注意事项,需要的朋友参考一下 示例 结果看起来像: 值是:用户输入的内容