2

Anyone help me i want to change the default icon color of search view.i want to open the search item in this activity and get the result in another activity.I am using android.support.v7.widget.SearchView in my menu class Iwant to set the icon but its not showing when i run the code.

package com.example.abc.fullvolleysearch;

import android.app.SearchManager;
import android.content.Context;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuInflater;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.app.SearchManager;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.SearchView;
import android.view.Menu;
import android.view.MenuInflater;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        MenuInflater inflater = getMenuInflater();
        // Inflate menu to add items to action bar if it is present.
        inflater.inflate(R.menu.menu_main, menu);
        // Associate searchable configuration with the SearchView
     /*   SearchManager searchManager =
                (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView =
                (SearchView) menu.findItem(R.id.menu_search).getActionView();
        searchView.setSearchableInfo(
                searchManager.getSearchableInfo(getComponentName()));*/
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

Here is my menu xml item

<item
    android:id="@+id/menu_search"
    android:title="@string/menu_search"
    appcompat:actionViewClass="android.support.v7.widget.SearchView"
    appcompat:showAsAction="always"/>
Joshua
  • 5,901
  • 2
  • 32
  • 52
Avanish Singh
  • 278
  • 3
  • 9

2 Answers2

9

For Lollipop and above versions place the below code in onCreateOptionsMenu() before return statement

 SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search));
    ImageView searchButton = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_button);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        searchButton.setImageTintList(ColorStateList.valueOf(getResources().getColor(R.color.yourDesiredColor)));
    }

might be useful for someone.

akhil xavier
  • 1,847
  • 15
  • 15
  • This needs to go to onPrepareOptionsMenu(), after the menu is inflated. Otherwise good answer. – zyamys Jan 28 '17 at 23:02
  • Thanks a lot for solution. P.S. You should do the same for a close button in search view: ImageView closeButton = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { closeButton.setImageTintList(ColorStateList.valueOf(getResources().getColor(R.color.primary))); } – Taras Vovkovych Jan 15 '19 at 11:47
1

Add This as Your Menu Item

android:icon="@drawable/search"
Avinash Mishra
  • 797
  • 9
  • 19