2013-04-17 2 views
6

У меня проблема с объектом SpannableString.Почему мой текст не отображается со стилем при использовании SpannableStringBuilder?

Ниже короткий пример:

SpannableString spanstr = new SpannableString("Bold please!"); 
spanstr.setSpan(new StyleSpan(Typeface.BOLD), 0, spanstr.length(), 0); 

SpannableStringBuilder sb = new SpannableStringBuilder(); 
sb.append(spanstr); 
sb.append("\n"); // A newline 
sb.append("The first line is bold. This one isn't."); 

CharSequence cq = sb.subSequence(0, sb.length()); 
// ^There's no such method to return a SpannableString, 
// so I try to return a CharSequence instead. 

// And then, at last: 
TextView contentView = (TextView) findViewById(R.id.some_id); 
contentView.setText(cq); 

Что пример пытается сделать, это показывает это:

Жирный пожалуйста!
Первая строка выделена жирным шрифтом. Это не так.

Но проблема в том, что первая строка текста не будет выделена жирным шрифтом.

Почему этого не ожидается?

+0

contentView.setText (СО); – Raghunandan

+0

попробуйте ответить ниже – Raghunandan

ответ

16

Используйте spannable строку строителя для установки в качестве текста в TextView:

contentView.setText(sb); 

или же вы можете сделать так:

SpannableStringBuilder spanstr = new SpannableStringBuilder("Bold please!"); 
spanstr.setSpan(new StyleSpan(Typeface.BOLD), 0, spanstr.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
spanstr.append("\n"); 
spanstr.append("The first line is bold. This one isn't."); 
contentView.setText(spanstr); 
+0

Не работает для AlertDialog ... –

2

использовать сам SpannableStringBuilder экземпляр.

contentView.setText(sb); 

выход с кодом:

enter image description here

+0

Спасибо большое. Я вызвал 'toString()' на 'spannableBuilder' и не мог понять, почему я не видел стилизованный текст. –

+0

@RenatKaitmazov Вы не должны вызывать метод toString() в SpannableBuilder, если вы это сделаете, он будет считать его строковым, а не стилизованным текстом – Pragnani

2

Попробуйте ниже. Вам нужно установить строку spannable в textview. Таким образом, установить spannable строку текста, как показано ниже

String s= "The first line is bold. This one isn't"; 
String title="Bold Please!"; 
TextView tv = (TextView) findViewById(R.id.some_id); 
tv.setText(""); 
SpannableString ss1= new SpannableString(title); 
ss1.setSpan(new StyleSpan(Typeface.BOLD), 0, ss1.length(), 0); 
tv.append(ss1); 
tv.append("\n"); 
tv.append(s); 

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

enter image description here

+0

Спасибо .. Он работает как очарование, как то, что я хочу реализовать – KishuDroid

Смежные вопросы