I want to use SearchView in my project, but I have a problem with elements' color. Let me show you: its fragmentDialog where I have my SearchView
I dont need to change bg color. The next picture is for example. I want to see SearchView elements without black bg.
I have tried to
but nothing is working. The search icon and anoter elements still white. Maybe I'm losing something? Can I do this in XML? Please, help me.
To solve this issue you just need to add a toolbar style in your style. xml file like below: Now define your style in your toolbar app: theme like below: That's it now you will be able to see the SearchView widget icon color as you defined in your style.
Android SearchView provides user interface to search query submitted over search provider. SearchView widget can be implemented over ToolBar/ActionBar or inside a layout. SearchView is by default collapsible and set to be iconified using setIconifiedByDefault(true) method of SearchView class.
In this answer I assume that, the SearchView
is added inside Toolbar
and AppTheme
is a child of 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>
Now use the AppTheme.Toolbar
as your toolbar's theme.
<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" />
You need to use android.support.v7.widget.SearchView
try with this style in your searchview,
Before expanding searchview --->
After expanding searchview --->
<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>
You can modify your search view with a costume style in `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>
then use this style in your search view :
<android.support.v7.widget.SearchView
android:layout_width="match_parent"
android:layout_height="wrap_content"
...
app:theme="@style/AppSearchView" />
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);
Try to add those lines to style.
android:textColorPrimary
changes text that user inputs in EditText.
android:textColorSecondary
changes back arrow, "remove text" cross and small search icon before the hint.
<item name="android:textColorPrimary">@color/white</item>
<item name="android:textColorSecondary">@color/white</item>
Searchview
which comes with support library has features to change icons
<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=""
>
So, what was my problem. I used android.widget.SearchView instead of android.support.v7.widget.SearchView. I changed SearchView and after that proposed solution started to work.
If somebody can explain why styles and different things did not work or can give me a link, I'll be appreciated.
This will help you if you want to change color of magnifying glass in Search view. if you use Material theme than this
ImageView icon = album_search.findViewById(com.google.android.material.R.id.search_button);
Drawable whiteIcon = icon.getDrawable();
whiteIcon.setTint(Color.BLACK); //Whatever color you want it to be
icon.setImageDrawable(whiteIcon);
and if Appcompact theme than just change com.google.android.material.R.id.search_button
to android.support.v7.appcompat.R.id.search_button
Thats it
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With