2016-10-03 1 views
5

Ich habe einige benutzerdefinierte Themen in meinem styles.xml
Nun, wenn die Aktivität das Thema nimmt, es nutzt die colorPrimary, colorPrimaryDark und colorAccent Werte.
Für den Hintergrund meines Layouts verwende ich ? Attr/colorAccent, so dass es die Hintergrundfarbe basierend auf dem ausgewählten Thema auswählen kann.
Wenn ich einen der obigen Werte verwende, funktioniert es gut. Aber ich möchte einen benutzerdefinierten Artikelwert für meine Hintergrundfarbe definieren.
Ich versuchte es wie folgt, aber es hat nicht funktioniert. irgendwelche Ideen, damit es funktioniert?
Mein eigenes Thema mit benutzerdefinierten Wert:
Wie benutzerdefinierte Artikel in android Theme-Deklaration hinzufügen?

<style name = "customTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">#4285f4</item> 
    <item name="colorPrimaryDark">#2C75F2</item> 
    <item name="colorAccent">#E1FFC7</item> 
    <item name="customBgColor">#d3d3d3</item> 
</style> 


Und ich will es in der Art Layout verwenden, wie

<style name="layoutStyle" > 
    <item name="android:background">?attr/customBgColor</item> 
</style> 

Antwort

11

eine attars.xml Datei in Bild gezeigt erstellen.

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <!-- Other values--> 
    <attr name="customBgColor" format="reference" /> 

</resources> 

enter image description here

customTheme 1

<style name = "customTheme1" parent="Theme.AppCompat.Light.NoActionBar"> 
    <!-- Other values--> 
    <item name="customBgColor">#d3d3d3</item> 
</style> 

customTheme 2

<style name = "customTheme2" parent="Theme.AppCompat.Light.NoActionBar"> 
    <!-- Other values--> 
    <!-- Black Color in theme2--> 
    <item name="customBgColor">#111111</item> 
</style> 

Einstellung Farbe TextView als EXA mple.

Sie können es in ähnlicher Weise in jedem Widget überall verwenden.

Diese TextView wird in der folgenden Aktivität verwendet.

<TextView 
    android:id="@+id/txt_rate_us_about" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:text="Rate us on Play Store!" 
    android:textColor="?attr/customBgColor" 
    android:textSize="20dp" /> 

Möchten Sie das Thema dynamisch festlegen.

public class AboutUsActivity extends Activity { 

    int theme = 1; 
    // int theme = 2; 2nd theme. 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     switch (theme) { 
      default: 
      case 1: 
       this.setTheme(R.style.customTheme1); 
       break; 
      case 2: 
       this.setTheme(R.style.customTheme2); 
       break; 

     } 
     // you must call `setTheme()` before `setContentView()` 
     setContentView(R.layout.activity_about); 

    } 

Für mehrere Aktivitäten haben Sie das Thema für jedes von ihnen separat festgelegt.

+0

Ich habe es versäumt, Attribute zu definieren, nach Hinzufügen von attrs.xml funktioniert es gut. Danke @sohail. – Shree

+0

Statt Farbcodes innerhalb des Artikels zu setzen. Lege das in die color.xml und füge dieses Farb-Tag in das Element ein. – gayan1991

Verwandte Themen