5

sto cercando di ottenere tutte le mie attività per avere uno stile tema personalizzato che dovrebbe essere simile a questo:Come rendere lo stile di tema personalizzato windowBackground su tutti i dispositivi Android?

good

Questo tema funziona su molti dispositivi, tra cui il Nexus 7, il Samsung Galaxy S4, e il Samsung Droid Charge (esecuzione Gingerbread). Tuttavia, su altri dispositivi, come ad esempio HP Slate 7 e Motorola Droid RAZR, si finisce per guardare in questo modo:

bad

Ho il seguente nei miei AndroidManifest.xml 's application tag:

android:theme="@style/AppTheme" 

Il tema è il seguente in res/values/styles.xml:

<style name="AppBaseTheme" parent="@android:style/Theme.Light.NoTitleBar"> 

</style> 

<style name="AppTheme" parent="@style/AppBaseTheme"> 
    <item name="android:windowBackground">@color/background</item> 
</style> 

ho anche aggiunto un styles.xml sotto res/values-v11. Qui è lo stile applicabile da lì:

<style name="AppBaseTheme" parent="@android:style/Theme.Holo.Light.NoActionBar"> 
</style> 

Infine, questo appare in styles.xml sotto res/values-v14:

<style name="AppBaseTheme" parent="@android:style/Theme.DeviceDefault.Light"> 
</style> 

ho cercato di definire il tema per ogni attività e utilizzare per manualmente la funzione setTheme() in onCreate() , ma niente ha funzionato. Ho anche provato a impostare manualmente uno sfondo in ogni Activity, e anche questo non ha funzionato. Cosa posso fare per risolvere il mio problema?

MODIFICA: Ciò che è interessante è impostare android:background negli stili per farlo funzionare, ma poi gli elementi che non dovrebbero avere sfondi ricevono anche quel colore di sfondo.

risposta

13

la chiave per risolvere il problema stava cambiando android:windowBackground nel tema al seguente:

<item name="android:windowBackground">@drawable/default_background</item> 

Si noti che non ho più sto usando @color, ma semplicemente una @drawable, l'XML per cui è qui sotto:

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

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
    <solid android:color="@color/background"/> 
</shape> 

sembra che alcuni dispositivi non supportano l'accettazione di un colore per questo elemento.

+1

Avevo un S2 in esecuzione 4.1 che sembrerebbe scegliere casualmente un colore dal mio colors.xml per lo sfondo della finestra. Questa soluzione l'ha sistemata per me. Vorrei sapere perché era rotto! – Tom

1

Ho trovato che l'ultima versione di Android Studio prevede che il genitore per lo stile debba essere Theme.AppCompat. Inoltre, è bene lo stile di creare un file nella directory colors.xml valori (con elementi di colori con nome tra i tag di risorse). Metti i tuoi valori RGB come valori sugli elementi colorati nominati. Riferiscili nei tuoi stili con @ color /.

<!--colors.xml in values folder--> 
<resources> 
    <color name="color1">#ffb62a23</color> 
    <color name="color2">#ffedeba6</color> 
    <color name="color3">#00ff00</color> 
</resources> 

<!--style tags --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="android:windowBackground">@color/color2</item> 
    <item name="android:textColorPrimary">@color/color1</item> 
    <item name="android:textColorSecondary">@color/color2</item> 
    <item name="android:textColorTertiary">@color/color3</item> 
</style>