2010-07-01 14 views
12

Mam niestandardowy komponent, który chcę nadać te same kolory co TextView. To znaczy, nie chcę kopiować jego kolorów, chcę uzyskać domyślne kolory tła i pierwszego planu, jeśli jest taka koncepcja na Androida.Jak uzyskać domyślne kolory na Androidzie

[Edytuj]

Poniższy wydaje uzyskując kolor tekstu mojego TextView. Ale czy to tylko szczęście? Nie jest mi intuicyjnie, że domyślny TextView użyłby android.R.attr.textColorSecondary? I dlaczego resolveAttribute nie zwraca bezpośrednio koloru?

TypedValue tv = new TypedValue(); 
getContext().getTheme().resolveAttribute(android.R.attr.textColorSecondary, tv, true); 
Color holyColor = getResources().getColor(tv.resourceId); 

[Edytuj]

znalazłem kodu źródłowego TextView na android.git.kernel.org, ale wydawało się, że zawiera dużo referrences do com.android.internal.R, która nie sądzę, powinno się używać we własnym kodzie. Obecnie szukam jakiegoś dowodu, który TextView używa android.R.attr.textColorSecondary.

[Edytuj]

znalazłem jakieś dowody na developer.android.com w styles.xml że TextView wykorzystuje android.R.attr.textAppearanceSmall. textAppearanceSmall jest domyślnie udokumentowany jako "dodatkowy kolor tekstu".

Chyba miałem szczęście, ale nadal nie lubię tego małego fragmentu kodu.

+0

Twoja obserwacja jest również poparta dokumentacją tutaj: [http://developer.android.com/guide/topics/resources/accessing-resources.html#ReferencesToThemeAttributes](http://developer.android.com/ guide/topics/resources/accessing-resources.html # ReferencesToThemeAttributes "Referencing style attributes") – fr1550n

Odpowiedz

0

Czego szukasz, to atrybuty. Atrybuty łączą widgety ze stylami. Na przykład: android:background jest ustawieniem dla określonego widoku, ale istnieją atrybuty, takie jak android:panelBackground i android:windowBackground, które można zastosować do zastąpienia systemu jako całości.

Powinieneś przejrzeć R.attr, a następnie połączyć się z tymi atrybutami w swoim widżecie. Powinno być ich kilka powiązanych z TextView; byłoby sensownie pobrać kod źródłowy Androida i sprawdzić, które atrybuty są używane.

Powiązane problemy