Search code examples
androidsearchview

Android SearchView icon as search button


I Have SearchView that works well by inputting ENTER in soft keyboard, I want that search icon shown in search input also work as search button, something like this image: (it is not about styling just making Magnifier icon clickable)

search box with clickable Magnifier icon

is it possible?


Solution

  • finally I could solve this by getting access to default mag icon in search view by R.id.search_mag_icon and setting OnClickListener on it. it is not clean code but at least it work for me.

    search activity:

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search);
        final Intent intent = getIntent();
        listView=(ListView)findViewById(R.id.simple_list);
        final SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        searchView = (SearchView) findViewById(R.id.sv);
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
        ImageView magImage = (ImageView) findViewById(R.id.search_mag_icon);
        magImage.setImageResource(R.drawable.search);
        magImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intentSelected = new Intent(SearchActivity2.this, SearchActivity2.class);
                intentSelected.setAction(Intent.ACTION_SEARCH);
                CharSequence query = searchView.getQuery();
                intentSelected.setData(Uri.parse( query.toString() ));
                intentSelected.putExtra("QUERY", query.toString());
                startActivity(intentSelected);
                hideKeyboard(SearchActivity2.this);
                finish();
            }
        });
        if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
            String query = intent.getStringExtra(SearchManager.QUERY);
            String button_query = intent.getStringExtra("QUERY");
            if(query==null && button_query!=null)
                query = button_query;
            if(query!=null) {
                searchView.setQuery(query, false);
                headers = db.doSearch(query);
                dataModels = new ArrayList<>();
                dataModels = setListItems(headers);
                adapter = new CustomListAdapter(dataModels, getApplicationContext());
                listView.setAdapter(adapter);
                listView.setEmptyView(findViewById(R.id.iv_noresult));
            }
        }