2015-02-12 8 views
9

Wie kann ich in meinem Android-Java-Code auf die Farbe "colorPrimary" in meinem Thema verweisen?Wie kann ich die Primärfarbe von meinem App-Thema erhalten?

Ich habe folgendes Thema Definition:

<!-- Application theme. --> 
<style name="AppTheme" parent="AppBaseTheme"> 

    <item name="colorPrimary">@color/myColor1</item> 
    <item name="colorPrimaryDark">@color/myColor2</item>  
    <item name="colorControlNormal">@color/myColor3</item> 
    <item name="colorControlActivated">@color/myColor4</item> 

</style> 

ich die Farbe Ressource verweisen könnte direkt (R.color.myColor1), aber ich würde es vorziehen, das Thema des primaryColor Einstellung zu verweisen, so dass es im Einklang bleibt, wenn Das ColorPrimary ändert sich in der Zukunft.

Ist das möglich?

Antwort

27

verwenden:

TypedValue typedValue = new TypedValue(); 
getTheme().resolveAttribute(R.attr.colorPrimary, typedValue, true); 
int color = typedValue.data; 
+0

, dass immer eine andere Farbe zu sein scheint, die wie ein generisches android blau aussieht. Könnte es sein, dass getTheme() das Standardthema erhält, nicht das, das tatsächlich für die App definiert ist? – Mayec

+1

Oh Entschuldigung. Wenn Sie diese Option außerhalb von onCreate verwenden, müssen Sie mActivity.getTheme() verwenden. (onCerate: mActivity = das) – ByteHamster

+0

Ich rufe es innerhalb einer Methode der Hauptaktivität (nennen wir es "myListActivity"). Der Aufruf erfolgt also in myListActivity.myMethod(). Wäre es in diesem Fall nicht auch das = myListActivity? – Mayec

Verwandte Themen