2011-02-28 5 views
0

Pour une activité Android avec le thème:spinner Android avec du texte noir sur un fond sombre

 <android:theme="@android:style/Theme.Light.NoTitleBar"> 

et pas d'autres propriétés de couleur explicites, sur un Motorola DroidX (version Android 2.3.340.MB810.Verizon.en. US), l'arrière-plan du bouton et du bouton est noir avec un texte noir bien que l'arrière-plan principal soit blanc. Sur la plupart des autres téléphones, la roulette et les boutons apparaissent sous la forme d'un texte noir sur un fond dégradé gris clair.

Est-ce que je fais quelque chose de mal, ou est-ce que cela pourrait être un bug d'Android ou de Motorola?

Dans tous les cas, quelqu'un peut-il suggérer une bonne solution de contournement?

Répondre

1

Concevez votre propre dessin personnalisable pour l'arrière-plan spinner et appliquez-le. Pour les images spinnerbackground.xml, vous pouvez référencer les images à partir du SDK. recréer les images selon vos exigences de conception

"plates-formes \ Android-sdk \ android-9 \ data \ res \ drawable-hdpi \ *. .png"

spinnerbackground.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:state_window_focused="false" android:state_enabled="true" 
     android:drawable="@drawable/wlbtn_dropdown_normal" /> 
    <item 
     android:state_window_focused="false" android:state_enabled="false" 
     android:drawable="@drawable/wlbtn_dropdown_disabled" /> 
    <item 
     android:state_pressed="true" 
     android:drawable="@drawable/wlbtn_dropdown_pressed" /> 
    <item 
     android:state_focused="true" android:state_enabled="true" 
     android:drawable="@drawable/wlbtn_dropdown_selected" /> 
    <item 
     android:state_enabled="true" 
     android:drawable="@drawable/wlbtn_dropdown_normal" /> 
    <item 
     android:state_focused="true" 
     android:drawable="@drawable/wlbtn_dropdown_disabled_focused" /> 
    <item 
     android:drawable="@drawable/wlbtn_dropdown_disabled" /> 
</selector> 

alors pour widget spinner Apposer votre drawable personnalisé:

<Spinner android:background="@drawable/spinnerbackground" 
     android:id="@+id/spinnerIDr" 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent"> 
    </Spinner> 
+0

Merci, Vinayak.B. C'est une bonne suggestion. Mais la raison pour laquelle je me méfie de cette approche est le risque qu'une application ne soit pas conforme au thème d'un fabricant ou d'un utilisateur. J'ai fait l'hypothèse que n'importe quelle plate-forme respecterait «Theme.Light» dans le contexte d'une approche globale blanc sur noir ou noir sur blanc etc. Le DroidX semble être une exception pour le rendre noir sur gris foncé. Malheureusement, je n'ai pas d'expérience avec un Motorola DroidX et j'ai seulement découvert le problème à partir des commentaires des utilisateurs sur le marché. – mayfly

+0

Oui Je suis d'accord avec votre commentaire, mes suggestions sont, de toute façon vous concevez votre application selon vos normes de conception puis faites la conception complète selon vos normes. Lorsque la plate-forme vous permettant de faire cela, ce sera un point positif pour les développeurs. Qui sait à l'avenir (comme DroidX) les thèmes seront dans quels modèles. Si vous y allez avec votre façon personnalisée, vous pouvez vous assurer qu'il restera cohérent en permanence. –

+0

Merci encore. Vous avez raison, il vaudrait mieux forcer le problème. L'application en question est PhoneTrack: au cas où quelqu'un voudrait me contacter à propos de problèmes de lisibilité avec des appareils particuliers. – mayfly

Questions connexes