android - 使用 SpannableString[/Builder] 和富文本

标签 android spannablestring

我正在尝试构建富文本,其中第一部分是“正在寻找:”并且是粗体,但其余部分不是粗体。这是我的代码:

SpannableStringBuilder lookingForString = new SpannableStringBuilder("Looking for: ");
lookingForString.setSpan(new StyleSpan(Typeface.BOLD), 0, lookingForString.length(),
                                         0);
int start = (lookingForString.length() - 1);
for (int i = 0; i < looking_for_names.length(); ++i) {
// No comma before the first and after the last 'Looking for' value
    if (i > 0) {
        lookingForString.append(", ");
        lookingForString.setSpan(new StyleSpan(Typeface.NORMAL), start,
                                (lookingForString.length() - 1), 0);
        start += 2;
    }

    String lfItem = looking_for_names.optString(i);
    lookingForString.append(lfItem);
    lookingForString.setSpan(new StyleSpan(Typeface.NORMAL), start,
                            (lookingForString.length() - 1), 0);
    start += lfItem.length();
}
tvLookingFor.setText(lookingForString, BufferType.SPANNABLE);

然而,结果是整行都是粗体。我尝试了很多变体,但我无法正确控制字体...无论我如何编码,它都倾向于保留第一种字体。

我如何才能只将“寻找:”设为粗体,而将其余文本设为常规(非粗体)?

最佳答案

如果你只需要加粗文本部分,那么就使用html标签。

String htmlString="<b>Looking for: Bold</b> and Normal";
tvLookingFor.setText(Html.fromHtml(htmlString), TextView.BufferType.SPANNABLE);

关于android - 使用 SpannableString[/Builder] 和富文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8191414/

相关文章:

android - 如何在 Android 中循环遍历 SpannedString 或 SpannableString 中的 Spanned

java - 无法从嵌套 Firebase 数据库获取值

android - Proguard:忽略包不会阻止警告

android - android :name and android:label 之间的区别

android - Cordova 插件 Android Activity - 访问资源

android - 如何在一行 TextView 的左右两侧对齐文本?

android - 使用 SpannableString 调整文本对齐方式

java - 使用图像和环绕图像的文本编辑 TextView

android - 在 SpannableString 中获取应用跨度的范围

php - 连接 DB MySql Android 应用程序