2017-06-30 1 views
1

Je sais qu'il y a déjà beaucoup de réponses pour cette question ici, et je ne créerais pas un autre fil si je n'avais pas déjà essayé tout ce que j'ai vu ici. Quoi qu'il en soit, la question est assez simple. Cela ne me dérange pas si la solution vient du style XML ou du code Java (les deux solutions sont les bienvenues). Je vais montrer tout (la plupart de toute façon) j'ai essayé de le résoudre. Tout d'abord, l'icône searview semble être immuable par le code puisque je ne peux rien y changer. Mon SearchView est déclaré dans menu.xml que ceComment changer la couleur de l'icône searchview?

<item android:id="@+id/icon_search" 
    android:title="Searchador" 
    android:icon="@drawable/ic_search_black_24dp" <!-- icon not used by searchview anyway --> 
    android:showAsAction="always" 
    android:actionViewClass="android.widget.SearchView" 
/> 

et à l'intérieur de mon onCreateOptionsMenu Je cette

SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
searchMenuItem = menu.findItem(R.id.icon_search); 
searchView = (SearchView) searchMenuItem.getActionView(); 
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 
searchView.setSubmitButtonEnabled(false); 
searchView.setOnQueryTextListener(this); 
MenuTint.colorIcons(this, menu, Color.BLUE); 
return true; 

Le MenuTint.colorIcons(this, menu, Color.BLUE); je suis arrivé d'une classe spéciale, j'ai trouvé here où il change fondamentalement toute ma couleur des icônes, malheureusement ne fonctionne pas pour l'icône de searchview.

J'ai alors trouvé quelques réponses suggérant d'utiliser un style comme celui-ci

<style name="SearchViewStyle" parent="Widget.AppCompat.SearchView"> 
    <!-- changing my icon, its color and stuff.. --> 
    <item name="searchIcon">@drawable/ic_search</item></style> 

mais je recevais l'erreur No resource found that matches the given name 'Widget.AppCompat.SearchView'.. J'ai alors trouvé que je devrais ajouter la bibliothèque de projet android-support-app-compat au lieu de seulement le .jar. Ça n'a pas marché. Je veux dire, l'importation a fonctionné, mais l'erreur a continué à montrer. Ensuite, j'ai trouvé quelque part que je devrais changer le project.properties de target = android-19 à 21 (ou plus) mais il n'a pas résolu l'erreur "No resource found".

Donc je suis bloqué pour ce simple détail où j'ai besoin de changer la couleur de la recherche.

En outre, ce n'est pas exactement la même question, mais je crois qu'il pourrait être résolu de la même manière, donc je vais inclure ici: Je voulais changer la distance entre les icônes. Quelqu'un a suggéré cette solution

<style name="ActionButtonStyle" parent="AppBaseTheme"> 
    <item name="android:minWidth">0dip</item> 
    <item name="android:paddingLeft">0dip</item> 
    <item name="android:paddingRight">0dip</item>     
</style> 

, mais je finis par obtenir this

Comme vous pouvez le voir, cette approche fonctionne pour mes icônes personnalisées seulement, mais pas pour l'icône SearchView, ni pour l'icône de débordement de menu. Je voudrais changer la distance entre toutes les icônes de manière égale.

Répondre

0

Si vous voulez changer l'icône de recherche de SearchView, vous avez juste besoin d'obtenir le point de vue de l'image dans la vue comme suit:

searchView = v.findViewById(R.id.searchView); 
//change icon color 
ImageView searchIcon = searchView.findViewById(android.support.v7.appcompat.R.id.search_button); 
searchIcon.setImageDrawable(ContextCompat.getDrawable(getActivity(),R.drawable.ic_search_icon)); 

Il est important que l'icône est R.id.search_button et vous peut le remplacer par un actif vecteur que vous fournissez, dans ce cas R.drawable.ic_search_icon

de même, vous pouvez modifier le texte dans le SearchView comme suit:

//set color to searchview 
SearchView.SearchAutoComplete searchAutoComplete = searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text); 
searchAutoComplete.setHintTextColor(getResources().getColorandroid.R.color.white)); 
searchAutoComplete.setTextColor(getResources().getColor(android.R.color.white)); 
2

Pour changer l'icône de vue de la recherche de la couleur utiliser les lignes de code suivantes:

SearchView searchView = (SearchView) findViewById(R.id.searchview); 
ImageView icon = searchView.findViewById(android.support.v7.appcompat.R.id.search_button); 
icon.setColorFilter(Color.BLACK); 
+0

Il ne fonctionne pas. Mais en utilisant le 'R.id.search_button' fourni par @Carlos Daniel au lieu de votre 'R.id.search_mag_icon' cela a fonctionné exactement comme je le voulais. Puisque sa réponse m'a permis de changer mon icône, je vote sa réponse comme la bonne, bien que votre "setcolorfilter" semble correspondre à mes besoins en douceur que d'avoir à définir un dessin comme sa réponse. Je vous remercie. Les deux –

+0

De rien, content que ce soit réglé pour vous maintenant de toute façon. J'ai édité ma réponse pour résoudre cela pour vous, j'ai juste oublié d'éditer ce bit! – adougies

+0

Nice, a parfaitement fonctionné pour moi. Une idée sur la façon de changer la couleur du bouton de fermeture? (X) –