Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Remove the SearchIcon as hint in the searchView

I am doing an application where for example when i click on the image(it is a searchView)

enter image description here

the search pad opens !

and it looks like enter image description here

but here the default search icon (magnifier) gets displayed but this dissappears as soon as some text is entered

enter image description here

but i dont want that magnifier to be displayed even the image is clicked for the first time

and here i am not using any xml file

my code is

public class MainActivity extends Activity {      @SuppressLint("NewApi")     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);          RelativeLayout relative = new RelativeLayout(this);         LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);         relative.setLayoutParams(params);         setContentView(relative);          SearchView searchView = new SearchView(this);         traverseView(searchView, 0); //      searchView.setIconifiedByDefault(false);         LayoutParams searchViewparams = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); //      searchViewparams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);         searchView.setLayoutParams(searchViewparams);         relative.addView(searchView);     }     @TargetApi(Build.VERSION_CODES.HONEYCOMB)     @SuppressLint("NewApi")     private void traverseView(View view, int index) {         if (view instanceof SearchView) {             SearchView v = (SearchView) view;             for(int i = 0; i < v.getChildCount(); i++) {                 traverseView(v.getChildAt(i), i);             }         } else if (view instanceof LinearLayout) {             LinearLayout ll = (LinearLayout) view;             for(int i = 0; i < ll.getChildCount(); i++) {                 traverseView(ll.getChildAt(i), i);             }         } else if (view instanceof EditText) {             ((EditText) view).setTextColor(Color.GREEN);             ((EditText) view).setHintTextColor(Color.BLACK);         } else if (view instanceof TextView) {             ((TextView) view).setTextColor(Color.BLUE);         } else if (view instanceof ImageView) {             ((ImageView) view).setImageResource(R.drawable.ic_launcher);         } else {             Log.v("View Scout", "Undefined view type here...");         }     } } 
like image 211
Hummer Avatar asked Dec 02 '13 08:12

Hummer


2 Answers

In my app i've used android.support.v7.widget.SearchView and to hide search icon this worked for me :

<android.support.v7.widget.SearchView     ...     app:iconifiedByDefault="false"     app:searchIcon="@null" /> 
like image 61
Armin Avatar answered Oct 09 '22 21:10

Armin


I've had trouble with this too. I combined the tutorial I found and an existing answer found here in stackoverflow.

int magId = getResources().getIdentifier("android:id/search_mag_icon", null, null); ImageView magImage = (ImageView) searchView.findViewById(magId); magImage.setLayoutParams(new LinearLayout.LayoutParams(0, 0)); 

Take note that searchView is a LinearLayout, so use LinearLayout.LayoutParams to avoid an exception.

I also tried this but it doesn't remove the view. I can't seem to figure why.:

magImage.setVisibility(View.GONE); 

For the other views that you need to change, refer to this tutorial.

like image 29
chjarder Avatar answered Oct 09 '22 20:10

chjarder