Removing default search icon from SearchView widget
Asked Answered
R

7

5

How can i remove default search icon which appears as a hint in SearchView widget(not in actionbar)?Through styles i can change the icon but i can't find a way to remove it? enter image description here

Resurrectionism answered 9/4, 2015 at 5:50 Comment(0)
T
10

It's Worked......

ImageView searchViewIcon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon);

ViewGroup linearLayoutSearchView =(ViewGroup) searchViewIcon.getParent();
linearLayoutSearchView.removeView(searchViewIcon);
Token answered 12/8, 2016 at 8:12 Comment(2)
Best answer of the lotSerieswound
For androidx users use this ImageView searchViewIcon = (ImageView)searchView.findViewById(androidx.appcompat.R.id.search_mag_icon); searchViewIcon.setVisibility(View.GONE);Bakery
N
5

For me it only worked this:

ImageView magImage = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon);
magImage.setVisibility(View.GONE);
magImage.setImageDrawable(null);

@sector11's almost got it, but still you need to add the line magImage.setImageDrawable(null) because taking a look at SearchView.java in Github,specifically the method updateViewsVisibility, you can see that it constantly gets its visibility updated

Extract from GitHub

if (mCollapsedIcon.getDrawable() == null || mIconifiedByDefault) {
    iconVisibility = GONE;
} else {
    iconVisibility = VISIBLE;
}
mCollapsedIcon.setVisibility(iconVisibility);
Nor answered 1/12, 2016 at 16:19 Comment(0)
P
4

For androidx SearchView just use app:searchIcon="@null"

Patricia answered 12/8, 2019 at 14:23 Comment(1)
only works for the plain view, once the search bar is clicked the icons still thereBernete
R
3

As of now you should use

ImageView magImage = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon);
magImage.setVisibility(View.GONE);
Rabid answered 5/1, 2016 at 15:13 Comment(0)
I
3

Try this one:

<style name="SearchViewStyle"  parent="Widget.AppCompat.SearchView" >
    <item name="searchHintIcon">@null</item>
     <!-- Background for the search query section (e.g. EditText) -->
    <item name="queryBackground">@color/transparent</item>
</style>

Never use direct android ids to find the view because in future if the ids change, your code will not work. Always use standard ways to solve the problems instead of a workaround. for more info refer this link.

Inexpugnable answered 19/3, 2018 at 6:51 Comment(0)
H
2

you can override it:

    int searchImgId = context.getResources().getIdentifier("android:id/search_mag_icon", null, null);
ImageView searchImage = (ImageView) searchView.findViewById(searchImgId);


searchImage.setVisibility(View.GONE); 

If your search view is in layout then please use EditText with close button:

https://github.com/yanchenko/droidparts/blob/develop/droidparts/src/org/droidparts/widget/ClearableEditText.java

If you want to create your own then use frame layout and add text change listener to mange visibility of close or cancel button.

there are few discussion regarding search view in UI:

How to create EditText with cross(x) button at end of it?

How to place button inside of edit text

If you want to show search list then use AutoCompleteTextView instead of EditText.

you can read tutorial from below link:

  1. http://www.tutorialspoint.com/android/android_auto_complete.htm

2.http://examples.javacodegeeks.com/android/core/widget/autocompletetextview/android-auto-complete-example/

3.http://androidexample.com/Show_AutoComplete_Suggestions_-_Android_Example/index.php?view=article_discription&aid=105&aaid=127

I hope it will work.

Harker answered 9/4, 2015 at 6:12 Comment(12)
it gives NullPointerException on searchImage.setLayoutParams..i placed this inside onCreate() of activityResurrectionism
onCreate(), where you write your code to prepare all view.Harker
getting nullpointerexception on searchImage.setVisibility(View.GONE);Resurrectionism
are you sure android:id/search_mag_icon is correct?Resurrectionism
my searchview widget is iconified..when i click on icon it expands ..i am NOT using setIconifiedByDefault(false)Resurrectionism
You want to remove search icon or not ?Harker
Yeah I want to remove search icon from expandable search viewResurrectionism
Instead of context.getResources() i tried getApplicationContext().getResources() ,getBaseContext().getResources() and just getResources() but none of them worked..What should be there in context?Resurrectionism
My SearchView is NOT a part of action bar..maybe I need to use something different thereResurrectionism
My searchView is in xml layout NOT in menu layoutResurrectionism
but i need to display suggestion list also.i have used editext with cross button previously where suggestion list is not required..but here suggestion list is requiredResurrectionism
Then use autocomplete textview instead of EditText.Harker
N
2

please set this SearchView in your code

android:paddingLeft="-16dp" // this line is remove the space of icon

android:paddingStart="-16dp" // // this line is remove the space of icon

android:searchIcon="@null" // this line to remove the search icon

android:closeIcon="@null" // this line to remove the close icon

 <SearchView
                        android:queryBackground="@android:color/transparent"
                        android:id="@+id/search"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:paddingLeft="-16dp"
                        android:paddingStart="-16dp"
                        android:layout_gravity="center"
                        android:gravity="center"
                        android:background="@null"
                        android:searchIcon="@null"
                        android:closeIcon="@null"
                        android:theme="@style/BaseTheme"
                        android:iconifiedByDefault="false"
                        android:queryHint="@string/hint">

                        <requestFocus />

                    </SearchView>
Nonrecognition answered 6/3, 2020 at 7:31 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.