2011-09-25 6 views
3

tl; dr: Le style de texte blanc dans le thème de l'application est sélectionné dans la boîte de dialogue de recherche, ce qui rend le texte de la recherche invisible. Je me bats puissamment avec ce qui semble être un problème trivial.Android Style/Theming de la boîte de dialogue de recherche

Mon application utilise un arrière-plan sombre et j'ai modifié la couleur du texte pour qu'elle soit plus claire que le gris standard à l'aide de #EEEEEE.

J'ai implémenté une boîte de dialogue de recherche (pré-Honeycomb) et cela fonctionne bien, mais le texte dans la boîte de dialogue de recherche sélectionne le même #EEEEEE donc il est essentiellement invisible. Même le menu contextuel affiché lorsque j'appuie longuement sur le texte de recherche reprend #EEEEEE, donc le texte est également invisible. Je me suis arraché les cheveux et je suis à court de cheveux.

Style:

<style name="master" paret="@android:style/Theme.NoTitleBar"> 
    <item name="android:textColor">#EEEEEE</item> 
    <item name="android:windowNoTitle">true</item>   
</style> 

Manifest:

<application android:icon="@drawable/icon" 
      android:label="@string/app_label" 
      android:theme="@style/master" 
      android:hardwareAccelerated="true" 
      android:debuggable="true"> 
+0

utilisation différente couleur pour le textColor? –

+0

Hey @YashwanthKumar, je voudrais une couleur claire dans mon application, et une couleur sombre dans la boîte de dialogue de recherche. J'ai tout vu, je n'arrive pas à comprendre comment le faire moi-même. –

Répondre

5

L'attribut android:textColor n'est pas destiné à être utilisé dans les styles de thème, il est principalement utile dans les styles d'apparence de widget et de texte.

Si vous souhaitez modifier les couleurs de texte générales à l'aide d'un thème, utilisez plutôt la famille d'attributs android:textColor*. Il y en a plusieurs, et différentes vues les utilisent différemment, donc il faut un peu d'expérimentation (ou une étude attentive du code source Android) pour bien faire les choses. La documentation android.R.attr les répertorie tous. Recherchez les attributs commençant par textColor.... Pour commencer, essayez ce thème, il se comportera mieux en n'influencant pas du tout les couleurs du dialogue de recherche, ce qui semble être ce que vous voulez. Soit dit en passant, vous n'avez pas besoin de mettre android:windowNoTitle à true dans votre thème comme thème parent ne déjà:

<style name="master" parent="@android:style/Theme.NoTitleBar"> 
    <item name="android:textColorPrimary">#EEEEEE</item> 
    <item name="android:textColorSecondary">#EEEEEE</item> 
    <item name="android:textColorTertiary">#EEEEEE</item> 
</style> 
+3

Oui! Je vais nommer mon premier-né, Martin. –

+1

Comme moi! Même problème, merci beaucoup pour la réponse utile. – Konklone

0

je suis entré dans le même problème que vous. J'ai cherché une solution mais il semble que vous ne pouvez pas changer le textColor d'une boîte de dialogue. Ma solution était de créer une boîte de dialogue personnalisée basée sur ce tutoriel: http://blog.androgames.net/10/custom-android-dialog/

Je l'étais beaucoup basé sur le code source Android, en utilisant toujours les mêmes noms de méthodes etc pour le rendre un peu plus facile.

Il est pas idéal, mais pour autant que je sais que c'est la meilleure option ...

EDIT: pour votre problème il pourrait y avoir une solution plus simple: ne mettez pas le textColor dans le thème, mais mettre dans un style. Je ne sais pas comment vous concevez votre application, mais je crée généralement un «style maître» dont tous les autres héritent (direct ou indirect). Vous pouvez ensuite placer la textColor dans la boîte de dialogue afin que toutes les boîtes de dialogue standard aient la couleur textColor standard.

Questions connexes