46

sto usando ActionBarActivity dal Android 5 SDK e qui è la mia theme.xml per v21v21 Android Theme.Appcompat colore accento viene ignorato, senza imbottitura sulle finestre di dialogo

<style name="AppTheme_Light" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="android:colorPrimary">@color/abc1</item> 
    <item name="android:colorPrimaryDark">@color/abc2</item> 
    <item name="android:colorAccent">@color/abc3</item> 
</style> 

Ma i colori vengono ignorati e sostituiti da un colore verde acqua predefinito e tutte le finestre di dialogo vengono visualizzate senza riempimento.

Problem http://i62.tinypic.com/21cebcz.png

Inoltre, imbottitura viene ignorata anche in altri luoghi come brindisi personalizzato, problema si verifica solo nei dispositivi lecca-lecca.

Edit:

Il problema imbottitura è dovuto a fitsSystemWindow e l'ho preso fissato con
this question..

Ma il problema del colore dell'accento è ancora lì, e non interessa solo i dialoghi ma l'intera app.

risposta

122

Informazioni sul colore dell'accento. Stai utilizzando un tema AppCompat, quindi dovresti rimuovere Android dallo spazio dei nomi all'interno del tuo tema.

<style name="AppTheme_Light" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="colorPrimary">@color/abc1</item> 
    <item name="colorPrimaryDark">@color/abc2</item> 
    <item name="colorAccent">@color/abc3</item> 
</style> 

Informazioni sulla finestra di dialogo. AppCompat non lo supporta (come so).
Si può provare a usare questo stile nelle vostre valori-V21 cartella:

<style name="Theme" parent="FrameworkRoot.Theme"> 
    <item name="android:alertDialogTheme">@style/Theme.AlertDialog</item> 
</style> 

<style name="Theme.AlertDialog" parent="android:Theme.Material.Light.Dialog.Alert"> 
    <item name="android:colorPrimary">@color/demo_primary_color</item> 
    <item name="android:colorPrimaryDark">@color/demo_colorPrimaryDark</item> 
    <item name="android:colorAccent">@color/theme_accent_1</item> 
</style> 

AGGIORNAMENTO 23/04/2015: libreria di supporto V.22.1

I nuovi support library v22.1 opere con la finestra di dialogo . È possibile utilizzare uno android.support.v7.app.AlertDialog o il nuovo AppCompatDialog.

Ad esempio:

import android.support.v7.app.AlertDialog 

AlertDialog.Builder builder = 
     new AlertDialog.Builder(this, R.style.AppCompatAlertDialogStyle); 
      builder.setTitle("Dialog"); 
      builder.setMessage("Lorem ipsum dolor ...."); 
      builder.setPositiveButton("OK", null); 
      builder.setNegativeButton("Cancel", null); 
      builder.show(); 

E utilizzare uno stile come questo:

<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert"> 
    <item name="colorAccent">#FFCC00</item> 
    <item name="android:textColorPrimary">#FFFFFF</item> 
    <item name="android:background">#5fa3d0</item> 
</style> 

In caso contrario è possibile definire nel vostro tema corrente:

<style name="AppTheme" parent="Theme.AppCompat.Light"> 
    <!-- your style --> 
    <item name="alertDialogTheme">@style/AppCompatAlertDialogStyle</item> 
</style> 

e poi nel codice:

import android.support.v7.app.AlertDialog 

    AlertDialog.Builder builder = 
      new AlertDialog.Builder(this); 
+4

Ok, prima di tutto è un onore avere la mia domanda ha risposto dal creatore di carte-lib. Il problema del padding era dovuto a 'fitsSystemWindow' e l'ho risolto usando [questa domanda.] (Http://stackoverflow.com/questions/26599805/android-alert-dialog-not-styled-properly-on-lollipop ? rq = 1) Modifica: per quanto riguarda il colore dell'accento non è solo limitato ai dialoghi, ma viene ignorato ovunque – k1slay

+0

È stata appena modificata la risposta relativa al colore dell'accento. –

+2

Rimozione di 'android:' funzionante. Molte grazie. – k1slay

19

aggiornamento

ho applicato con successo i colori per AppCompat finestre di dialogo temi, forse essere utile per qualcuno:

valori/style.xml

<style name="Theme.MyApp" parent="Theme.AppCompat.Light"> 

... 

/* for android 4 - 4.4, we not define alert dialogs style */ 

</style> 

valori-V21/style.xml

<style name="Theme.MyApp" parent="Theme.AppCompat.Light"> 

... 

/* define alert dialog style for android 5 */ 
<item name="android:alertDialogTheme">@style/Theme.AlertDialog</item> 

</style> 

<style name="Theme.AlertDialog" parent="Theme.AppCompat.Light.Dialog"> 

    <!--app abar color in Activties Task manager --> 
    <item name="colorPrimary">@color/my_color</item> 

    <!--copy/paste colors --> 
    <item name="colorAccent">@color/my_color</item> 

    <!--status bar color --> 
    <item name="colorPrimaryDark">@color/my_color</item> 


</style> 
+0

questo ha risolto i miei problemi dopo molte ricerche. Grazie!! – Giordano

+1

per me questo non funziona a meno che non lo applichi esplicitamente! Con codice durante l'inizializzazione di ProgressDialog – JehandadK

Problemi correlati