J'ai utilisé " Android Action Bar Generator " pour générer mon propre thème Holo . Ensuite, j'ai ajouté deux icônes à la barre d'action, l'une pour un filtre de recherche et l'autre pour un sélecteur de fichiers, les deux icônes sont blanches. L'icône du sélecteur de fichiers (à droite) a l'air bien, mais l'icône de recherche est gris foncé. Lorsque vous tapez dans la vue du texte de recherche, le bouton de fermeture est également gris foncé.
J'ai essayé de changer la couleur de la barre d'action et aussi de la vue de recherche, sans succès. Pourquoi la vue de recherche affiche-t-elle cette couleur? Comment puis-je le changer?
Merci beaucoup.
UPDATE: je pensais que mon application utilisait mon icône mais ce n'est pas le cas. Elle utilise l'icône de vue de recherche par défaut. Ma question est donc: comment puis-je changer l'icône par défaut de la vue de recherche? Cette phrase du fichier menu.xml ne fonctionne pas:
Android:icon="@drawable/selectable_header_search"
Malheureusement, il n’existe pas de moyen simple de remplacer l’icône SearchView
par un dessin personnalisable, l’attribut theme searchViewSearchIcon
n'étant pas public. Voir this answer pour plus de détails.
Cependant, je pense que votre problème est causé par l'héritage du mauvais thème. Veuillez utiliser Android:Theme.Holo.Light.DarkActionBar
comme base pour votre thème. Ensuite, les icônes par défaut de la barre d’action doivent être de couleur claire.
<style name="AppTheme" parent="Android:Theme.Holo.Light.DarkActionBar">
...
</style>
L'attribut searchViewSearchIcon n'étant pas public, vous pouvez modifier l'icône à l'aide du code suivant:
int searchIconId = searchView.getContext().getResources().getIdentifier("Android:id/search_button",null, null);
ImageView searchIcon = (ImageView) searchView.findViewById(searchIconId);
searchIcon.setImageResource(R.drawable........);
Essayez de mettre en place dans le showAsAction cette option:
Sans cette option, SearchView ne prend pas l'icône que vous avez configurée pour le bouton d'action.
menu.add("Search")
.setIcon(
getResources().getDrawable(
R.drawable.selectable_header_search))
.setActionView(searchView)
.setShowAsAction(
MenuItem.SHOW_AS_ACTION_ALWAYS
| MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW
| MenuItem.SHOW_AS_ACTION_WITH_TEXT);
Le moyen le plus simple que j'ai trouvé de changer l'icône de recherche par défaut dans la barre d'action est d'utiliser le menu onPrepareOptions. Vous pouvez voir ma réponse ici à une question similaire!
Dans votre style de thème, incluez ceci:
<style name="YourTheme.Toolbar">
<item name="searchViewStyle">@style/YourActionBarSearch</item>
<item name="editTextColor">@color/your_ab_text_color</item>
<item name="Android:textColorHint">@color/your_ab_hint_color</item>
</style>
Vous pouvez maintenant définir le style de SearchView avec searchViewStyle
, et editTextColor
définira la couleur du texte dans le champ de recherche. En définissant Android:textColorHint
, vous définissez également la couleur de l'indice, par exemple. "Chercher...".
<style name="YourActionBarSearch" parent="@style/Widget.Holo.SearchView">
<item name="searchIcon">@drawable/ic_ab_search</item>
<item name="queryBackground">@null</item>
<item name="submitBackground">@null</item>
<item name="searchHintIcon">@drawable/ic_ab_small_search</item>
<item name="defaultQueryHint">@string/toolbar_search_hint</item>
<item name="closeIcon">@drawable/ic_ab_small_search_close</item>
</style>
Cela donnera plus ou moins de style à votre vue de recherche à votre guise. Le champ searchIcon
est l’icône de la barre d’action. Le champ searchHintIcon
est la petite icône à gauche du conseil dans le champ de recherche. Le champ closeIcon
est l’icône de fermeture située à droite du champ de recherche.
Regardez ceci, pour plus de paramètres de style:
$Android_SDK/platforms/Android-24/data/res/values/styles_holo.xml