2011-07-19 12 views
44

W podanym kodzie lbl [0] .getTextColor() daje błąd, ale nie wiem, jak uzyskać tekstowy tekst w pliku java, pomóż mi.Jak uzyskać kolor tekstu z widokiem tekstowym?

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

Dzięki.

Odpowiedz

119

Użyj tego

textView.getCurrentTextColor()

+0

ok Dzięki JeffG –

7

Jest jeszcze jedna ważna rzecz do zapamiętania: getCurrentTextColor(), jak również podobne metody jak getCurrentHintTextColor() i getHighlightColor() Zwraca int wartości nie hex używane głównie do określenia barwy. Może to być nawet bardziej mylące, ponieważ jest to liczba ujemna, na przykład dla czerwonego wynosi -65536 dla zieleni -16711936 i dla bieli -1. Aby to było proste, to dlatego, że getCurrentTextColor() zwraca różnicę między bieżącym kolorem a wartością koloru białego (w systemie dziesiętnym) minus 1. Wyrażenie to: CurrentColor- (WhiteColor + 1), gdzie white to 16777215. Oczywiście dla standardowych kolorów można użyć predefiniowanych stałych, takich jak Color.GREEN lub Color.MAGENTA, ale wiedząc, że można efektywnie użyć getCurrentTextColor() dla dowolnych kolorów.

Można czytać nawet więcej na temat ustawiania i uzyskanie kolorów w Androida w http://android4beginners.com/2013/07/lesson-1-3-how-to-change-a-color-of-text-and-background-in-textview/

+9

Niepotrzebne mylące. "getCurrentTextColor()" zwraca wartość koloru, która jest liczbą całkowitą - przechowywaną w 32 bajtach. 4 grupy po 8 bajtów. Nie jest to ani hex, ani dec, dopóki nie przekształcisz go w ciąg znaków, i nie musisz wykonywać żadnych obliczeń z białą wartością. – Tomasz

0

Jeśli używasz contextcompat bibliotekę, aby ustawić kolor dla nowych wersji Androida, można uzyskać pokaźny inną wartość, to co było powyżej . Ten test sprawdził się, gdy używałam następujących ustawień, aby ustawić kolor testowy: view.setTextColor (ContextCompat.getColor (ctx, color));

textColor =view.getCurrentTextColor(); 
    CoreApp.debug("viewutils", "green color: "+textColor); 
    assertThat(textColor, is(ContextCompat.getColor(mCtx, R.color.green))); 
Powiązane problemy