2012-01-18 43 views
8

Hiện nay, tôi đang thiết lập văn bản và màu nền cho một phần của chuỗi bằng SpannableString như vậy:Thêm nhiều phong cách cùng một lúc để SpannableString

SpannableStringBuilder spanString = new SpannableStringBuilder(text); 
spanString.setSpan(new ForegroundColorSpan(Color.RED), start, end, 0); 
spanString.setSpan(new BackgroundColorSpan(Color.GRAY), start, end, 0); 

Có cách nào để kết hợp cả hai trong những phong cách vào một CharacterStyle và đặt nó vào văn bản trong một lệnh?

Trả lời

8

Nếu cuối cùng bạn muốn thiết lập các văn bản của một TextView (hoặc một cái gì đó tương tự), bạn có thể sử dụng để định dạng SpannableString mỗi chuỗi riêng biệt và sử dụng TextUtils.concat vá chúng lại với nhau, trong đó loại bỏ sự cần thiết của một SpannableStringBuilder.

Mã bên dưới đặt văn bản trong số TextView thành "Hello World" trong đó "Hello" có màu đỏ và "Thế giới" có màu xanh lục.

TextView myTextView = new TextView(this); 
SpannableString myStr1 = new SpannableString("Hello"); 
SpannableString myStr2 = new SpannableString("World"); 
myStr1.setSpan(new ForegroundColorSpan(Color.RED), 0, myStr1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
myStr2.setSpan(new ForegroundColorSpan(Color.GREEN), 0, myStr2.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
myTextView.setText(TextUtils.concat(myStr1, " ", myStr2)); 
Các vấn đề liên quan