我不知道如何使TextView上的特定文本变成粗体。

是这样的

txtResult.setText(id+" "+name);

我希望输出是这样的:

1111年尼尔

id和名称是我从数据库中检索值的变量,我想将id改为粗体,但只有id,所以名称不会受到影响,我不知道如何做到这一点。


当前回答

只需在标签中添加这个

dangerouslySetInnerHTML={{__html: "<p>Your html text here.<p>"}}

其他回答

只需要在HTML中构建字符串并设置它:

String sourceString = "<b>" + id + "</b> " + name; 
mytextview.setText(Html.fromHtml(sourceString));

只需在标签中添加这个

dangerouslySetInnerHTML={{__html: "<p>Your html text here.<p>"}}

这里有一个更好的解决方案,如果你想使多个文本粗体。我改进了Eitan的代码。谢谢你搞清楚。

public static SpannableStringBuilder makeSectionOfTextBold(String text, String... textToBold) {
    SpannableStringBuilder builder = new SpannableStringBuilder(text);

    for (String textItem :
            textToBold) {
        if (textItem.length() > 0 && !textItem.trim().equals("")) {
            //for counting start/end indexes
            String testText = text.toLowerCase(Locale.US);
            String testTextToBold = textItem.toLowerCase(Locale.US);
            int startingIndex = testText.indexOf(testTextToBold);
            int endingIndex = startingIndex + testTextToBold.length();

            if (startingIndex >= 0 && endingIndex >= 0) {
                builder.setSpan(new StyleSpan(Typeface.BOLD), startingIndex, endingIndex, 0);
            }
        }
    }

    return builder;
}

首先:你不需要担心从Raghav Sood的答案使用缓慢的性能代码。

第二:使用Kotlin时,不需要编写w3bshark的答案提供的扩展函数。

最后:所有你需要做的就是从谷歌使用Kotlin android-ktx库(参考这里找到更多信息以及如何将它包含在你的项目中):

// Suppose id = 1111 and name = neil (just what you want). 
val s = SpannableStringBuilder()
          .bold { append(id) } 
          .append(name)
txtResult.setText(s) 

产量:1111尼尔


更新:

因为我认为它可以帮助其他人,也可以展示你可以走多远,这里有更多的用例。

当你需要用蓝色和斜体显示文本时: val myCustomizedString = SpannableStringBuilder() .color(blueColor, {append(“蓝色文本”)}) .append("显示") .italic{append(“这是无痛的”)} 当你需要同时以粗体和斜体显示文本时: 粗体{斜体{追加(“粗体和斜体”)}}

简而言之,粗体、追加、颜色和斜体是SpannableStringBuilder的扩展函数。您可以在官方文档中看到其他扩展函数,从那里您可以考虑其他可能性。

这不是最简单的解决方案吗?

<string name="string">Please provide your <b>Name</b> properly</string>

只要使用你想要的字符串:)

结果如下所示:

请填写您的姓名