Helpex - Trao đổi & giúp đỡ Đăng nhập
49

Tôi đang cố gắng thêm các dòng với các màu khác nhau vào TextView của mình bằng cách sử dụng thẻ html.

Vì lý do gì,

    Html.fromHtml("<font color='#145A14'>text</font>");

sẽ không hiển thị có màu trong TextView.

49 hữu ích 3 bình luận 61k xem chia sẻ
12 trả lời 12
57
Html.fromHtml("<font color='#145A14'>text</font>");

Thay vì ở trên, vui lòng sử dụng sau

Html.fromHtml("<![CDATA[<font color='#145A14'>text</font>]]>");

Điều này đã làm việc cho tôi và tôi chắc chắn rằng nó cũng sẽ hiệu quả với bạn.

Hãy cho tôi biết trong trường hợp có bất kỳ vấn đề nào.

57 hữu ích 4 bình luận chia sẻ
24

Câu trả lời của tôi liên quan đến phỏng đoán về mã của bạn, nhưng đây là:

Khi bạn sử dụng thẻ phông chữ: KHÔNG bao gồm kênh alpha để chuỗi hex của bạn trông giống như "# ff123456". Nếu bạn sử dụng Integer.toHexString (), bạn sẽ có một kênh alpha trong kết quả đó.

Nó hoạt động khi tôi sử dụng chuỗi con (2) trên chuỗi hex của tôi từ nguồn cung cấp lại.

Tóm lại:

text.setText(Html.fromHtml("<font color='#123456'>text</font>"));

sẽ hoạt động, nhưng:

text.setText(Html.fromHtml("<font color='#ff123456'>text</font>"));

sẽ không!

24 hữu ích 1 bình luận chia sẻ
23

Đảm bảo tắt mọi công cụ sửa đổi như:

android:textAllCaps="true"
23 hữu ích 2 bình luận chia sẻ
5

Phương thức fromHtml cực kỳ hạn chế về các thẻ HTML mà nó hỗ trợ và phông chữ không phải là một trong số chúng. Xem http://commonsware.com/blog/Android/2010/05/26/html-tags-supported-by-textview.html để biết danh sách không chính thức. Tôi đã tự mình thực hiện một số nghiên cứu về vấn đề này và tôi thấy rằng fromHtml dựa trên một công cụ kết xuất ít tài liệu và khó hiểu.

5 hữu ích 3 bình luận chia sẻ
4

Tôi sử dụng mã này

Html.fromHtml(convertToHtml("<font color='#145A14'>text</font>"));

public String convertToHtml(String htmlString) {

    StringBuilder stringBuilder = new StringBuilder();
    stringBuilder.append("<![CDATA[");
    stringBuilder.append(htmlString);
    stringBuilder.append("]]>");
    return stringBuilder.toString();
}
4 hữu ích 0 bình luận chia sẻ
2

Đó trông giống như một màu rất tối, bạn có chắc chắn rằng màn hình của bạn có khả năng hiển thị những màu như vậy, để bạn có thể phân biệt chúng với màu đen không? Đoạn mã có vẻ tốt, tôi đã thử mã tương tự nhiều lần và nó hoạt động như một sự quyến rũ. Hãy thử nó với màu sáng hơn một chút, tức là # ff0000 (đỏ), để xác minh rằng nó hoạt động:

TextView text = ... // find or instantinate your text view.
text.setText(Html.fromHtml("<font color='#ff0000'>text</font>"));
2 hữu ích 0 bình luận chia sẻ
2
textView.setText(Html.fromHtml("<font color='blue'>text</font>"));
2 hữu ích 0 bình luận chia sẻ
2
txt_description1.setText(Html.fromHtml("<font color='rgb'>"+str_description1+"</font>"));

Nếu bạn không muốn có một màu tĩnh duy nhất và muốn phản ánh trực tiếp từ trình chỉnh sửa, bạn có thể sử dụng "rgb". Nó sẽ phản ánh màu chính xác những gì bạn đã thiết lập trong trình chỉnh sửa, chỉ cần thiết lập textviewconcatnó với giá trị textview. Và bạn đã sẵn sàng để đi.

2 hữu ích 0 bình luận chia sẻ
1

Đảm bảo giá trị RGB của bạn được CHỮ HOA. Android có thể hiểu # 00FF00 nhưng không hiểu # 00ff00.

1 hữu ích 0 bình luận chia sẻ
1

hãy thử cái này và nó sẽ hoạt động

 textView.setText(Html.fromHtml("<font color=\"#145A14\">text</font>"));
1 hữu ích 1 bình luận chia sẻ
0

Vâng, tôi đồng ý, đôi khi nó không hoạt động.

Để thay thế, tôi sử dụng trong xml cho Textview:

android:textColorLink="yourColor"

hoạt động như một sự quyến rũ;)

0 hữu ích 1 bình luận chia sẻ
0

Đối với văn bản màu có URL siêu liên kết:

textView.setText(Html.fromHtml("You agree to our <font color='#F20000'><a href='https://www.yoururl.com'> Terms of Service</a></font> and <font color='#F20000'><a href='https://www.yoururl.com'>Privacy Policy</a></font>", Html.FROM_HTML_MODE_LEGACY), TextView.BufferType.SPANNABLE);

Điều này đã hiệu quả với tôi và tôi chắc chắn rằng nó cũng sẽ hiệu quả với tất cả mọi người.

0 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ android textview , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading