2011-06-24 12 views

Odpowiedz

59

Możesz zapisać stary kolor, a następnie użyć go do przywrócenia pierwotnej wartości. Oto przykład:

ColorStateList oldColors = textView.getTextColors(); //save original colors 
textView.setTextColor(Color.RED); 
.... 
textView.setTextColor(oldColors);//restore original colors 

ale ogólnie domyślnie TextView kolor tekstu jest określana z bieżącego motywu zastosowanego do Activity.

+0

Works idealne dla mnie, dzięki! –

+0

Najbardziej poprawne rozwiązanie. Zachowaj stany kolorów tekstu (wyłączone, itp.) – dasar

+0

Z moich obserwacji wynika, że ​​kolor tekstu zdefiniowany przez motyw nie jest dziedziczony przez TextView dodawany dynamicznie z kodu. Zawsze pojawia się w kolorze białym, niezależnie od motywu ciemnego/jasnego. – shiouming

0

Brak domyślnego koloru. Oznacza to, że każde urządzenie może mieć własne.

+5

Nie ma domyślnych kolorów, tylko każda dystrybucja Android może je nadpisać – for3st

+0

@ for3st Czy wiesz o przypadkach, że je zmieniają? –

1

Wierzę, że domyślna liczba całkowita to 16711935 (0x00FF00FF).

+9

Wow hardcoded stuff, wiesz. Czy była to wartość dla wszystkich wersji Androida na wszystkich urządzeniach i we wszystkich wybieranych motywach ?! Żarty, wiesz ... :) – Bondax

+1

Więc domyślny kolor tekstu w Androidzie jest różowy? Myślę, że jest to bardziej zgodne z # 060001 http://developer.android.com/reference/android/R.color.html#primary_text_dark – for3st

33

Istnieją pewne kolory domyślne zdefiniowane w android.R.color

int c = getResources().getColor(android.R.color.primary_text_dark); 
+3

Powinno to być 'int c = ...' zamiast 'Kolor c = .. . ' –

+4

Od poziomu interfejsu API23 'getResources(). GetColor (int id)' jest teraz przestarzałe (patrz [link] (https://developer.android.com/reference/android/content/res/Resources.html# getColor% 28int% 29)). Możesz użyć 'getResources(). GetColor (int id, Resources).Motyw tematyczny) 'lub' ContextCompat.getColor (contex, android.R.color.primary_text_dark) ' – InfectedPacket

11

Zdobądź te wartości z atrybutami:

int[] attrs = new int[] { android.R.attr.textColorSecondary }; 
TypedArray a = getTheme().obtainStyledAttributes(R.style.AppTheme, attrs); 
DEFAULT_TEXT_COLOR = a.getColor(0, Color.RED); 
a.recycle(); 
+0

Wygląda na to, że odpowiednio wybierze kolor na podstawie motywu i zaktualizuje się na przykład, jeśli aplikacja działa w trybie nocnym. –

+0

Aby uzyskać TypedArray dla bieżącego tematu wywołaj go bez argumentu Theme: TypedArray a = getTheme(). ObtainStyledAttributes (attrs); – petrsyn

+0

To będzie uzyskać tylko odpowiedni kolor, jeśli motyw jest faktycznie za pomocą textColorSecondary. Ponieważ możliwe jest przesłonięcie tego tematu lub stylu, nie jest to bardzo dokładny sposób określania, jaki będzie domyślny kolor tekstu dla konkretnego widoku. Uwaga: poszczególne widoki mogą być teraz tematyczne, więc należy użyć motywu powiązanego z kontekstem widoku, zamiast zakładać, że temat działania działa dla wszystkich jego widoków. –

4

Istnieją domyślnie w temacie, że Android używa jeśli nie specifiy kolor tekstu . Mogą to być różne kolory w różnych interfejsach Androida (np. HTC Sense, Samsung TouchWiz, itp.). Android ma motyw _dark i _light, więc wartości domyślne są inne dla tych (ale prawie czarne w obu w androidach waniliowych). Dobrą praktyką jest jednak samodzielne definiowanie głównego koloru tekstu, aby zapewnić spójny styl na wszystkich urządzeniach.

W kodzie:

getResources().getColor(android.R.color.primary_text_dark); 
getResources().getColor(android.R.color.primary_text_light); 

w XML:

android:color="@android:color/primary_text_dark" 
android:color="@android:color/primary_text_light" 

Jako odniesienie w waniliowym Androida ciemny kolor tekstu tematem jest #060001 oraz w świetle motywu to #060003 od API v1. See the android style class here

37

Właściwie TextView kolor:

android:textColor="@android:color/tab_indicator_text" 

lub

#808080 
+1

To jest domyślny kolor tekstu wskaźnika karty. W wielu przypadkach może być taki sam jak domyślny kolor tekstu, ale nie będę na nim polegał. – k2col

+2

Bardzo blisko, ale ten kolor nie jest taki sam. – LukTar