Tôi đã viết thư viện vào cuối tuần để xử lý việc này, tôi gọi nó là RichTextView.
Thư viện cho phép bạn định dạng một đoạn văn bản (in đậm, gạch dưới, in nghiêng, kết hợp, vv) cũng như tô màu (màu văn bản và đánh dấu). Trong bản phát hành tiếp theo, tôi dự định cho phép các phông chữ tùy chỉnh và như vậy.
Để sử dụng nó rất đơn giản, chỉ cần thêm sự phụ thuộc sau đây để tập gradle của bạn:
compile 'com.androidessence.lib:richtextview:1.0.1'
Bây giờ, giả sử bạn muốn làm cho bốn nhân vật đầu tiên đậm, bạn chỉ có thể thực hiện cuộc gọi như sau:
myRichTextView.formatSpan(0, 4, RichTextView.FormatType.BOLD);
Lưu ý rằng tham số chỉ mục kết thúc không được bao gồm, vì vậy bằng cách nói (0 -> 4) chúng tôi thực sự đang lập chỉ mục bolding (0 -> 3).
Nếu bạn muốn làm cả đậm và gạch dưới, sử dụng một EnumSet:
myRichTextView.formatSpan(0, 4, EnumSet.of(RichTextView.FormatType.BOLD, RichTextView.FormatType.UNDERLINE));
Đối với các thông tin mới nhất xin vui lòng xem kho Github liên kết ở trên, mặc dù tôi sẽ cố gắng cập nhật câu trả lời này bất cứ lúc nào nó trở nên lỗi thời.
Câu trả lời hay, SpannableString thực sự là công cụ mạnh mẽ cho việc này. Tôi đã được lấy cảm hứng từ lớp đó để tạo ra một thư viện RichTextView sử dụng SpannableString dưới mui xe nhưng đơn giản hóa việc sử dụng cho các nhà phát triển: http://stackoverflow.com/a/36404986/3131147 – AdamMc331