Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android SearchView Icon

I want to disable the Mag icon displayed inside the search view component. Any idea how to reference it and remove it or replace it with another drawable ?

enter image description here

like image 278
Harsha M V Avatar asked Dec 22 '12 20:12

Harsha M V


People also ask

How do I change the Search icon on my Android?

Add the Search View to the App Bar To add a SearchView widget to the app bar, create a file named res/menu/options_menu. xml in your project and add the following code to the file. This code defines how to create the search item, such as the icon to use and the title of the item.

How do I move my search icon to the right?

android:layoutDirection="rtl" this worked for me. Show activity on this post. In case you want to use SearchView outside of ActionBar in any other view (let's say for example ConstraintLayout ) you can use the approach posted on this site.


2 Answers

Since the wording of the question does not contain any mention of ActionBarSherlock (except for the tag) and comments have been added that the accepted answer does not work for standard and/or support library action bar, I'm posting another answer. Here is the Java code for onCreate:

// obtain action bar ActionBar actionBar = getSupportActionBar();  // find SearchView (im my case it's in a custom layout because of left alignment) View v = actionBar.getCustomView(); SearchView searchView = (SearchView)v.findViewById(R.id.search_view); ImageView icon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon);  // method 1: does not work persistently, because the next line // should be probably called after every manipulation with SearchView // icon.setVisibility(View.GONE);  // method 2: working code icon.setAdjustViewBounds(true); icon.setMaxWidth(0); icon.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); icon.setImageDrawable(null); 

According to this post, while using a SearchView from the support library (android-support-v7-appcompat in my case) with setIconifiedByDefault(false) the icon is displayed outside edit textbox (SearchAutoComplete). Otherwise (setIconifiedByDefault(true)) it's displayed inside the box. The presented code is used for disabled "iconification" by default, and may require some changes to work with "iconified" search view. I don't know if the same applies to ActionBarSherlock.

Hope this helps.

like image 162
Stan Avatar answered Sep 28 '22 17:09

Stan


This icon is hint. So you can simply set new hint text.

int searchPlateId = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);     EditText searchPlate = (EditText) searchView.findViewById(searchPlateId);      searchPlate.setHint("Search"); 

If you want icon as hint text use spanable string with ImageSpan

int searchPlateId = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);     EditText searchPlate = (EditText) searchView.findViewById(searchPlateId);       searchPlate.setTextColor(getResources().getColor(R.color.search_text_color));     SpannableString string = new SpannableString(" ");     Drawable d = getResources().getDrawable(R.drawable.ic_search);     d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());     ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BOTTOM);     string.setSpan(span, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);     searchPlate.setHint(string); 
like image 25
Bychkovskiy Konstantin Avatar answered Sep 28 '22 17:09

Bychkovskiy Konstantin