Использование SpannableString [/ Builder] и Rich-text - PullRequest
1 голос
/ 19 ноября 2011

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

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

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

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

1 Ответ

4 голосов
/ 19 ноября 2011

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

String htmlString="<b>Looking for: Bold</b> and Normal";
tvLookingFor.setText(Html.fromHtml(htmlString), TextView.BufferType.SPANNABLE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...