Использование SpannableString[/Builder] и форматированного текста

Я пытаюсь создать форматированный текст, в котором первая часть говорит «Ищу:» и выделена жирным шрифтом, а остальная часть НЕ выделена жирным шрифтом. Это мой код:

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);

Однако в результате вся строка выделена жирным шрифтом. Я пробовал много вариантов, но мне не удается правильно управлять шрифтами... он имеет тенденцию сохранять первый шрифт, независимо от того, как я его кодирую.

Как сделать так, чтобы только «Ищу:» было выделено жирным шрифтом, а остальной текст — обычным (не выделенным жирным шрифтом)?


person Nick Betcher    schedule 19.11.2011    source источник


Ответы (1)


Если вам просто нужно выделить жирным шрифтом часть текста, просто используйте теги html.

String htmlString="<b>Looking for: Bold</b> and Normal";
tvLookingFor.setText(Html.fromHtml(htmlString), TextView.BufferType.SPANNABLE);
person Walid Hossain    schedule 19.11.2011
comment
Это работает программно? Документация, которую я видел, говорит, что это работает только для строк в файле strings.xml. - person Nick Betcher; 19.11.2011
comment
Любая строка html будет работать. Просто имейте в виду, что не все теги html поддерживаются. Хотя вы можете обрабатывать неподдерживаемые теги вручную. - person Walid Hossain; 19.11.2011