web-dev-qa-db-fra.com

Comment changer la couleur des éléments SearchView?

Je souhaite utiliser SearchView dans mon projet, mais j'ai un problème avec la couleur des éléments. Permettez-moi de vous montrer: son fragmentDialog où j'ai ma SearchView You can see what I mean here

Je n'ai pas besoin de changer la couleur bg. L'image suivante est par exemple. Je veux voir les éléments SearchView sans bg noir. The color of the elements is white

J'ai essayé de

  • change le thème
  • changer le style
  • changer la teinte

mais rien ne fonctionne. L'icône de recherche et les éléments anoter sont toujours blancs. Peut-être que je perds quelque chose? Puis-je le faire en XML? Aidez-moi, s'il vous plaît.

13
Alex Smith

Vous devez utiliser Android.support.v7.widget.SearchView

essayez avec ce style dans votre vue de recherche,

Avant d'étendre la vue de recherche ---> enter image description here

Après avoir étendu la vue de recherche --->

enter image description here

<Android.support.v7.widget.SearchView xmlns:Android="http://schemas.Android.com/apk/res/Android"
            Android:id="@+id/search_view"
            style="@style/SearchViewStyle"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_alignParentEnd="true"
            Android:layout_centerVertical="true"
            Android:layout_gravity="end" />

<style name="SearchViewStyle" parent="Widget.AppCompat.SearchView">
    <!-- Gets rid of the search icon -->
    <item name="searchIcon">@drawable/ic_search</item>
    <!-- Gets rid of the "underline" in the text -->
    <item name="queryBackground">@color/white</item>
    <!-- Gets rid of the search icon when the SearchView is expanded -->
    <item name="searchHintIcon">@null</item>
    <!-- The hint text that appears when the user has not typed anything -->
    <item name="queryHint">@string/search_hint</item>
</style>
21
Bhavnik

Dans cette réponse, je suppose que le SearchView est ajouté à l'intérieur de Toolbar et AppTheme est un enfant de Theme.AppCompat.Light.NoActionBar

<style name="AppTheme.Toolbar" parent="AppTheme">
    <!--This line changes the color of text in Toolbar-->
    <item name="Android:textColorPrimary">@color/green</item>
    <!--This line changes the color of icons in toolbar (back, overflow menu icons)-->
    <item name="Android:textColorSecondary">@color/green</item>
</style>

Utilisez maintenant le AppTheme.Toolbar comme thème de votre barre d'outils.

<Android.support.v7.widget.Toolbar
    Android:id="@+id/toolbar"
    Android:layout_width="match_parent"
    Android:layout_height="?attr/actionBarSize"
    Android:background="?attr/colorPrimary"
    app:popupTheme="@style/AppTheme.PopupOverlay"
    app:theme="@style/AppTheme.Toolbar" />
34
Rahul Raveendran
int searchiconId = view.getContext().getResources().getIdentifier("Android:id/search_button",null,null);
ImageView imgView = (ImageView)findViewById(searchiconId);
Drawable whiteIcon = img.getDrawable();
whiteIcon.setTint(Color.RED); //Whatever color you want it to be
img.setImageDrawable(whiteIcon);
5
TheLastBorn

Essayez d'ajouter ces lignes au style.

Android:textColorPrimary modifie le texte saisi par l'utilisateur dans EditText. Android:textColorSecondary change la flèche de retour, la croix "supprimer le texte" et la petite icône de recherche avant le conseil.

<item name="Android:textColorPrimary">@color/white</item>
<item name="Android:textColorSecondary">@color/white</item>
4
Oleksandr Nos

Searchview qui vient avec la bibliothèque de support a des fonctionnalités pour changer les icônes

<androidx.appcompat.widget.SearchView
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            app:searchIcon="@drawable/ic_search"
            app:closeIcon="@drawable/ic_close_black"
            app:commitIcon=""
            app:goIcon=""
            app:searchHintIcon=""
            app:voiceIcon=""
    >
1
Praveena

Alors, quel était mon problème. J'ai utilisé Android.widget.SearchView au lieu d'Android.support.v7.widget.SearchView. J'ai changé SearchView et après que la solution proposée a commencé à fonctionner.

Si quelqu'un peut expliquer pourquoi les styles et différentes choses n'ont pas fonctionné ou s'il peut me donner un lien, je serai apprécié.

1
Alex Smith

Vous pouvez modifier votre vue de recherche avec un style de costume dans `styles.xml ':

<style name="AppSearchView" parent="Widget.AppCompat.SearchView" >
    <!-- Text Size -->
    <item name="Android:textSize">@dimen/textSizePrimary</item>
    <!-- Query Text Color -->
    <item name="Android:textColorPrimary">@color/textColorPrimary</item>
    <!-- Hint Color -->
    <item name="Android:textColorHint">@color/textColorDisabled</item>
    <!-- Icon Color -->
    <item name="Android:tint">@color/textColorPrimary</item>
</style>

puis utilisez ce style dans votre vue de recherche:

<Android.support.v7.widget.SearchView
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    ...
    app:theme="@style/AppSearchView" />
0
Armin