2013-04-17 28 views
6

Tôi gặp sự cố với đối tượng SpannableString.Tại sao văn bản của tôi không hiển thị kiểu khi sử dụng SpannableStringBuilder?

Dưới đây là một ví dụ ngắn:

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

gì ví dụ ta đang cố gắng làm là thể hiện điều này:

Bold xin vui lòng!
Dòng đầu tiên được in đậm. Cái này không phải.

Nhưng vấn đề là: dòng đầu tiên của văn bản sẽ không hiển thị in đậm.

Tại sao nó không hoạt động?

+0

contentView.setText (sb); – Raghunandan

+0

thử câu trả lời dưới đây – Raghunandan

Trả lời

16

Sử dụng trình tạo chuỗi spannable để thiết lập dưới dạng văn bản trong TextView:

contentView.setText(sb); 

hoặc nếu không bạn có thể làm như thế này:

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

Không hoạt động đối với AlertDialog ... –

2

sử dụng SpannableStringBuilder dụ riêng của mình.

contentView.setText(sb); 

đầu ra với mã của bạn:

enter image description here

+0

Cảm ơn bạn rất nhiều. Tôi gọi là 'toString()' trên 'spannableBuilder' và không thể hiểu tại sao tôi không thấy một văn bản được tạo kiểu. –

+0

@RenatKaitmazov Bạn không nên gọi phương thức toString() trên SpannableBuilder, nếu bạn làm như vậy nó sẽ coi nó là String, không phải là một văn bản theo kiểu – Pragnani

2

Thử bên dưới. Bạn cần đặt chuỗi có thể chỉnh sửa thành dạng xem văn bản. Vì vậy, hãy đặt chuỗi có thể chỉnh sửa thành văn bản của bạn như bên dưới

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

Tôi đã thử ở trên và bạn có thể xem ảnh chụp kết quả bên dưới.

enter image description here

+0

Cảm ơn .. Nó hoạt động như sự quyến rũ như những gì tôi muốn thực hiện – KishuDroid

Các vấn đề liên quan