2013-04-17 19 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); 

はこのことを示しています!
最初の行は太字です。この1つではありません。

しかし、問題は、テキストの最初の行が太字で表示されないことです。

なぜそれは期待できませんか?

+0

contentView.setText(sb); – Raghunandan

+0

以下の回答を試してください – Raghunandan

答えて

16

はTextViewの中にテキストとして設定するためのspannable文字列ビルダを使用します。

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

か、他を。あなたのコードで

contentView.setText(sb); 

出力:

enter image description here

+0

ありがとうございました。私は 'spannableBuilder'の' toString() 'を呼び出して、なぜ私がスタイル付きテキストを見ていないのか理解できませんでした。 –

+0

@RenatKaitmazov SpannableBuilderでtoString()メソッドを呼び出すことはできません。そうした場合、スタイル付きテキストではなく文字列として扱われます – Pragnani

2

以下をお試しください。 spannable文字列をtextviewに設定する必要があります。だから私は上記を試してみましたが、あなたは以下の結果のスナップショットを見ることができます

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

以下のようにテキストにspannable文字列を設定します。

enter image description here

+0

ありがとうございます。私は実装したいものとして魅力的です – KishuDroid

関連する問題