2013-04-17 15 views
6

SpannableString nesnesinde sorun yaşıyorum.SpannableStringBuilder kullanılırken metnim neden stil ile gösterilmiyor?

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

Ne örnek yapmaya çalışıyor bu gösteriyor:

Aşağıda kısa bir örnek

lütfen

Kalın!
İlk satır kalındır. Bu değil.

Ancak sorun şudur: metnin ilk satırı kalın gösterilmez.

Neden bunu bekleniyor?

contentView.setText(sb); 

yoksa böyle yapabilirsiniz:

+0

contentView.setText (sb); – Raghunandan

+0

aşağıdaki yanıtı deneyin – Raghunandan

cevap

16

textview metin olarak ayarlamak için spannable dize oluşturucu kullanın

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 için çalışmaz ... –

2

kullanım SpannableStringBuilder örneğini kendisi. senin koduyla

contentView.setText(sb); 

çıkışı:

enter image description here

+0

Çok teşekkür ederim. 'SpannableBuilder' üzerinde toString() 'yi aradım ve neden tarzlı bir metin görmediğimi anlayamadım. –

+0

@RenatKaitmazov SpannableBuilder'da toString() yöntemini çağırmamalısınız, eğer bunu yaparsanız, bu dizeyi Dize olarak kabul edeceksiniz, stilize bir metin değil – Pragnani

2

aşağıda deneyin. Yazılabilir dizeyi metin görünümüne ayarlamanız gerekir. Bu yüzden yukarıda çalıştı

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

aşağıdaki gibi metne spannable dizesini ayarlayın ve aşağıda çıkan anlık görebilirsiniz.

enter image description here

+0

Teşekkürler. – KishuDroid

İlgili konular