2011-07-19 40 views
44

Trong mã đã cho lbl [0] .getTextColor() đưa ra Lỗi nhưng tôi không biết cách lấy màu văn bản của textview trong tệp java, hãy giúp tôi.cách nhận màu văn bản của chế độ xem văn bản?

public void angry(View v) 
{ 
    if (lbl[0].getTextColor() == Color.BLACK) 
     lbl[0].setTextColor(Color.RED); 
    if (lbl[0].getTextColor() == Color.RED) 
     lbl[0].setTextColor(Color.BLACK); 
} 

Cảm ơn.

Trả lời

119

Sử dụng này

textView.getCurrentTextColor()

+0

ok Cảm ơn JeffG –

7

Có một điều quan trọng cần nhớ: getCurrentTextColor() cũng như phương pháp tương tự như getCurrentHintTextColor() và getHighlightColor() giá trị trả về int không hex sử dụng chủ yếu để xác định màu sắc. Điều đó thậm chí có thể khó hiểu hơn vì đây là số âm, ví dụ cho màu đỏ là -65536, cho màu xanh lá cây -16711936 và cho màu trắng -1.

Để làm cho nó đơn giản, điều này là bởi vì getCurrentTextColor() trả về sự khác biệt giữa màu hiện tại và giá trị màu trắng (cả chữ số thập phân) trừ 1. Biểu thức là: CurrentColor- (WhiteColor + 1), trong đó màu trắng là 16777215. Tất nhiên đối với các màu tiêu chuẩn, bạn có thể sử dụng các hằng số được xác định trước như Color.GREEN hoặc Color.MAGENTA, nhưng biết rằng bạn có thể sử dụng hiệu quả getCurrentTextColor() cho bất kỳ màu nào.

Bạn có thể đọc nhiều hơn về việc thiết và nhận được màu sắc trong Android tại http://android4beginners.com/2013/07/lesson-1-3-how-to-change-a-color-of-text-and-background-in-textview/

+9

Khó hiểu không cần thiết. 'getCurrentTextColor()' trả về giá trị màu xảy ra là một số nguyên - được lưu trữ trên 32 byte. 4 nhóm 8 byte. Nó không phải là hex hay dec, cho đến khi bạn chuyển đổi nó thành một chuỗi và bạn không cần thực hiện bất kỳ phép tính nào với giá trị màu trắng. – Tomasz

0

Nếu bạn đang sử dụng thư viện contextcompat để đặt màu cho phiên bản mới của Android, bạn có thể nhận được một giá trị trông dể thương khác nhau sau đó những gì đã nêu trên . Thử nghiệm này đã làm việc cho tôi nơi tôi đã sử dụng những điều sau đây để đặt màu thử nghiệm

view.setTextColor (ContextCompat.getColor (ctx, color));

textColor =view.getCurrentTextColor(); 
    CoreApp.debug("viewutils", "green color: "+textColor); 
    assertThat(textColor, is(ContextCompat.getColor(mCtx, R.color.green))); 
Các vấn đề liên quan