Frage

I have a problem with a SpannableString object.

Below's a short example:

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

What the example's trying to do is showing this:

Bold please!
The first line is bold. This one isn't.

But the problem is: the first line of the text won't show up in bold.

Why doesn't it do it expected?

War es hilfreich?

Lösung

Use the spannable string builder for setting as text in textview :

contentView.setText(sb);

or else you can do like this :

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

Andere Tipps

use SpannableStringBuilder instance itself.

contentView.setText(sb);

output with your code:

enter image description here

Try the below. You need to set the spannable string to the textview. So set the spannable string to your text as below

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

I tried the above and you can see the resulting snapshot below.

enter image description here

If you use custom font in your device. There is such a silly bug i think. Please change your custom font to default in your device and try again.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top