9

In meiner Anwendung, ich versuche es in verschiedenen Schnitten values-21 Ordner android:Theme.Material als Elternteil Thema zu implementieren:Wie benutze ich android: Theme.Material (Material theme) in styles.xml android?

<!-- res/values-21/styles.xml --> 
<resources> 
<!-- your theme inherits from the material theme --> 
<style name="AppTheme" parent="android:Theme.Material"> 
    <!-- theme customizations --> 
     <item name="android:colorPrimary">@color/primary</item> 
    <item name="android:textColorPrimary">@color/text_primary</item> 
    <!-- darker variant for the status bar and contextual app bars --> 
    <item name="android:colorPrimaryDark">@color/primary_dark</item> 
    <!-- theme UI controls like checkboxes and text fields --> 
    <item name="android:colorAccent">@color/accent</item> 
    <item name="android:navigationBarColor">@color/primary_dark</item> 
    </style> 
</resources> 

Nach der App ausgeführt wird, erhalte ich Ordner unter error

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 

In Werten. Ich habe unten Stil

<style name="AppTheme" parent="Theme.AppCompat.Light"> 
    <!-- Customize your theme here. --> 
</style> 

Aber, wenn ich die gleichen Theme.AppCompat.Light in values-21 folder seine adaequat hinzufügen. aber actionbar color ändert sich nicht.

Warum kann ich das Materialdesignthema in values-21 folder nicht verwenden? Wie löst man dieses Problem?

(Anmerkung: meine Anwendung minsdk verison ist 13 und maxsdk version22 ist)

Meine Tätigkeit AppCompactActivity

+0

Sie können appcompat für dieses –

+0

verwenden @SandeepSingh ich auch bin mit appcompat. Welchen Appcampat brauche ich? – John

+0

sollten Sie ApcompatActivity anstelle von ActionBarActivity oder Activity verwenden, wenn Sie 22.1.1 Build-Version verwenden – Chandru

Antwort

4

erweitert Wenn Ihr eine AppCompatActivity verwenden, benutzen Sie einfach nur einen Stil in Ihrem res/values/styles.xml, und überprüfen Sie den von Ihnen verwendeten Namensraum für colorPrimary, colorPrimaryDark ....

<style name="AppTheme" parent="Theme.AppCompat.Light"> 
    <item name="colorPrimary">@color/primary</item> 
    <item name="colorPrimaryDark">@color/primary_dark</item> 
    <item name="colorAccent">@color/accent</item> 
</style> 
+0

Wie ändern wir die Actionbar Textfarbe in diesem? – John

+0

@farbe/text_primary Dies wird verwendet, um die Textfarbe der Aktionsleiste zu ändern. – John

+0

Die obige Antwort funktioniert gut. aber ich weiß immer noch nicht, warum wir das materielle Thema nicht verwenden können. Danke für die Antwort @GabrieleMariotti – John

5

enter image description here

Ihre App Thema wird in der Manifest-Datei definiert:

<application 
    android:theme="@style/AppTheme"> 

Sie diesen Stil in /res/values/styles.xml definiert finden.

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
</style> 

AppCompat verwenden, können Sie Ihre Themen sogar älter als Android 5.0 für Geräte verwendet werden. Die wichtigsten Materialdesign-Themen sind unten aufgeführt.

Dark Theme

enter image description here

Licht Theme

enter image description here

Licht Theme mit Dark Aktionsleiste

enter image description here

Fu eitere Lesen