9

Nella mia applicazione, sto cercando di implementare android:Theme.Material come tema principale in stili values-21 cartella:Come utilizzare Android: Theme.Material (tema materiale) 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> 

Dopo aver eseguito l'applicazione, io sono sempre al di sotto error

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

In cartella di valori. Ho sotto stile

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

Ma, se aggiungo lo stesso Theme.AppCompat.Light in values-21 folder relativo funzionamento benissimo. ma actionbar color non sta cambiando.

Perché non è possibile utilizzare il tema di progettazione materiale in values-21 folder? Come risolvere questo problema?

(nota: la mia domanda minsdk verison è 13 e maxsdk version è 22)

La mia attività si estende AppCompactActivity

+0

È possibile utilizzare appcompat per questo –

+0

@SandeepSingh io sto usando appcompat pure. quale appcampat ho bisogno di usare? – John

+0

si dovrebbe usare ApcompatActivity invece di ActionBarActivity o Activity se si utilizza 22.1.1 build versione – Chandru

risposta

4

Se usate un AppCompatActivity, basta utilizzare solo uno stile nel vostro res/values/styles.xml, e controlla lo spazio dei nomi che stai usando per 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

come si modifica il colore del testo della barra delle azioni in questo? – John

+0

@ color/text_primary viene utilizzato per modificare il colore del testo della barra delle azioni. – John

+0

La risposta sopra sta funzionando bene. ma ancora non so perché non possiamo usare il tema materiale. grazie per la risposta @GabrieleMariotti – John

5

enter image description here

tua app tema è definita nel file manifesto:

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

Troverete questo stile definito in /res/values/styles.xml.

<!-- 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> 

Utilizzando AppCompat permette ai temi da utilizzare anche per i vecchi dispositivi di Android 5.0. I principali temi di design dei materiali sono mostrati di seguito.

Dark Theme

enter image description here

Luce Tema

enter image description here

tema chiaro con scuro Barra azioni

enter image description here

Fu rther lettura