2013-01-14 1 views
2

J'ai un problème étrange avec des ressources Android. J'ai une application créée sur Android 2.2 (android:minSdkVersion="8"). L'application fonctionne bien.Comportement étrange de la couleur de dessinables dans Android 4.0 ou supérieur

Quand j'ai installé l'application par exemple sur Android 4.0, l'application fonctionne très bien, mais d'abord exécuter certaines ressources sont modifiées.

Par exemple, j'ai la couleur dessinable nommée primary_color qui fait référence à #FFFFFF couleur html. Après l'installation, le système rend la couleur noire au lieu du blanc. Dans certains cas, @android:color/white rend la couleur noire.

application de fermeture de force et redémarrer l'application pour résoudre ce problème.

S'il vous plaît aidez-moi à résoudre ce problème.

+0

se comporte-t-il de la même manière sur l'appareil et l'émulateur? –

+0

Je n'utilise pas d'émulateur. J'ai testé sur quelques appareils comme Samsung Galaxy Tab 2, lg l7, asus eee pad et ainsi de suite. – Marek

+1

essayez de nettoyer votre projet (Projet -> Clean) –

Répondre

0

Ceci est causé par un bug dans les versions Android 4.0 à 4.1.3, j'ai testé un problème similaire avec les drawables tournant au noir uniquement sur les appareils avec ces versions, il n'est pas présent sur les appareils avec la version android> 4.2.

Je suis sûr que vous avez remarqué dans votre recherche, mais il ne semble pas être documenté correctement et il n'y a pas de solution officielle, mais je peux fournir quelques solutions de contournement:

1) Désactivation de l'accélération matérielle, je une solution différente pour mon problème, mais cela a été connu pour résoudre certains problèmes avec les images dans les versions mentionnées ci-dessus Android. Si vous souhaitez activer l'accélération matérielle pour votre application, vous pouvez la désactiver pour l'activité du problème en l'ajoutant à la déclaration d'activité dans votre manifeste.

<activity 
android:name="activityName" 
android:hardwareAccelerated="false"/> 

2) Pour une solution spécifique à votre exemple, essayez le réglage de la couleur à @android:color/transparent, cette résolu mon problème où je besoin d'un drawable de fond pour rester blanc.

3) Reportez-vous ici: http://code.google.com/p/android/issues/detail?id=34619 pour voir un bogue similaire, documenté et certaines de ces solutions peuvent également fonctionner pour votre problème.

HTH

0

Je suis tombé exactement sur le même problème! J'ai eu ce sur Colors.xml

<resources> 
    <color name="white">#ffffffff</color> 
</resources> 

Et styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="android:windowBackground">@color/white</item> 
</style> 

Le problème est que lorsque fragment en utilisant (qui contient un ListView) à l'intérieur d'une activité ListView montre la couleur blanche en arrière-plan (qui est ce dont j'ai besoin) au premier lancement mais à la deuxième exécution, l'arrière-plan ListView était noir. Le problème n'existait que sur Android 4.0 (je n'ai pas testé sur 4.1) mais fonctionnait bien sur Android 4.3, 4.4, 5 etc.

Il s'avère que seul le problème était de couleur blanche, quand il n'y avait pas de couleur autre que le blanc problème de fond noir! Alors comme je voulais un fond blanc et je ne voulais pas avoir trop d'arrière-plan, donc le blanc comme windowBackground sur styles.xml était important, mais en même temps il provoque des problèmes de fond noir!

Donc, comme solution, je crée une autre couleur qui est pas complètement blanc, mais son blanc

<resources> 
    <color name="fakewhite">#fffefefe</color> 
</resources> 

Et styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="android:windowBackground">@color/fakewhite</item> 
</style> 

Par conséquent, à court #ffffffff couleur est convertie en # 00000000 pour les vues comme ListView et je remarque également ce comportement sur ScrollView. Cela peut ne pas être une solution parfaite, mais cela a fonctionné pour moi!

Questions connexes