2015-09-26 14 views
19

Es gibt viele Dokumente und Tutorials zum Erstellen oder Anpassen eines Android-Themastils über XML, aber es wurde keine Möglichkeit gefunden, es im Code zu erstellen. Irgendwelche Ideen, wie man den Stil im Code anstatt in XML erzeugt?Wie programmiere ich einen Android-Designstil?

Dies ist das Beispiel XML, das in Code programmatisch erstellen müssen:

<resources> 
    <style name="AppTheme" parent="android:Theme.Material"> 
    <item name="android:colorPrimary">@color/primary</item> 
    <item name="android:colorPrimaryDark">@color/primary_dark</item> 
    <item name="android:colorAccent">@color/accent</item> 
    </style> 
</resources> 
+0

Jeder Grund, warum Sie möchten, dass es programmgesteuert durchgeführt wird? Wenn Sie den Stil zur Laufzeit nur dynamisch ändern möchten, können Sie diesen Link http://stackoverflow.com/questions/3241729/android-dynamically-change-style-at-runtime überprüfen. Und wenn Sie einfach Style-Attribut im Code abrufen möchten - überprüfen Sie dies: http://StackOverflow.com/Questions/13719103/How-To-Retrieve-Style-Attributes-Programatically-From-Styles-Xml – random

+0

@Random keinen bestimmten Grund , müde von xml, also nur herumspielen, um zu sehen, ob es möglich ist, ein Thema im laufenden Betrieb zu erstellen – Mercury

+4

@random Ich habe einen Grund. Ich muss Farbe dynamisch geben, momentan ist Farben nicht entschieden. Also, ich schreibe ein Thema wie oben in xml, aber ich möchte nur auf dem ersten Bildschirm dynamisch Farbe geben. Also, danach wird es auf dem ganzen Bildschirm gelten. –

Antwort

2

kurze Antwort: Seine möglich nicht als programmatisch ein Thema & Set als Anwendung Thema erstellen (auch wenn wir erreicht, ein Theme Objekt zu erstellen) ohne eine Theme-Ressource-ID.

Details:

wenn Sie setTheme die Funktion ineffect ein Verfahren zur Herstellung ContextWrapper nennen, die am Ende AssetManager mit Ressource-ID-Zeiger aufruft, hält AssetManager Klasse die Methode Anwendung Thema für die Anwendung, die JNI Aufruf

Wie oben können wir nur eine Ressourcen-ID übergeben, um den Themestil anzuwenden. Aber mögliche Optionen sind

  1. Obwohl es auf Window Klasse Feature-Konstanten begrenzt ist. Wir können setFeatureDrawable & Funktion Konstanten verwenden, um einige Drawables gesetzt wie FEATURE_ACTION_BAR, FEATURE_CONTEXT_MENU etc ..
  2. Mit setTheme Funktion von Aktivität können wir das Thema von Stil Ressource festgelegt, dass das Problem in den Kommentaren von AjaySharma erwähnt lösen & Nathan
Verwandte Themen