2016-12-26 5 views
0
SpannableStringBuilder str = new SpannableStringBuilder(decimalFormat.format(prizes[0]) 
    + "€"); 
str.setSpan(new StyleSpan(BOLD), 0, str.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

money.setText("paid | " + str); 

Этот код должен производить тот же результат, как этот кодAndroid SpannableString (Builder) не применяется стилю

money.setText(Html.fromHtml("paid | <strong>" + decimalFormat.format(prizes[0]) 
    + "€</strong>") 

Но это не так! Мой текст неполужирный. fromHtml() один делает это жирным: Вот как я хочу, чтобы он появился, потому что над here они сказали, что это лучше в производительности, и я хочу использовать собственные функции для Android. Используя SpannableStringBuilder, он отображает следующее: Без ничего жирного. Я также попытался использовать только SpannableString вместо SpannableStringBuilder, но это ничего не изменило. Что я делаю не так?

My money переменная TextView.

ответ

0

Я сам нашел ответ. Я был уверен, что раньше я это пробовал, но он работает вот так: textView.setText(spannableStringBuilder) вместо textView.setText(someString + spannableStringBuilder).

Так что мой код теперь так:

SpannableStringBuilder str = new SpannableStringBuilder("paid | " 
    + decimalFormat.format(prizes[0]) + "€"); 
str.setSpan(new StyleSpan(BOLD), 7, str.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

money.setText(str); 
+2

Correct. Оператор '+' представляет собой * string * concatenation, которая преобразует 'str' из' SpannableStringBuilder' в обычную неформатированную строку. Используйте 'TextUtils.concat()' для объединения нескольких объектов CharSequence вместе, которые работают с объектами 'String' и' Spannable', сохраняя ваши интервалы. – CommonsWare

+2

или 'SpannableStringBuilder # insert()' method – pskink

1

вопрос с вы устанавливаете строку наконец денежного TextView. Это должна быть натянутая строка.

Проверьте с этим:

String sMoney = decimalFormat.format(prizes[0]) + "€"; 

SpannableString styledString = new SpannableString("paid | " + sMoney); 

// Эта строка кода важно, потому что я добавил "заплатил |" в spannable строке

styledString.setSpan(new StyleSpan(Typeface.BOLD), 7, styledString.length, 0); 

money.setText(styledString); 
+0

Да, я уже опубликовал это в своем ответе. – creativecreatorormaybenot