Android ActionBar Customize Search View
I did a class SearchViewFormatter to format easily the native SearchView android widget. An example:
new SearchViewFormatter() .setSearchBackGroundResource(R.drawable.my_bg) .setSearchIconResource(R.drawable.my_ic, true, false) //true to icon inside edittext, false to outside .setSearchVoiceIconResource(R.drawable.my_ic) .setSearchTextColorResource(R.color.my_color) .setSearchHintColorResource(R.color.my_color) .setSearchCloseIconResource(R.drawable.my_ic) .setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS) .format(mSearchView);
FYI now with ActionBar support v7 appcompat the way for change query hint color, text color, text size:
import android.support.v4.view.MenuItemCompat;import android.support.v7.widget.SearchView;import android.support.v7.widget.SearchView.SearchAutoComplete;...@Overridepublic boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_home, menu); MenuItem searchItem = menu.findItem(R.id.item_search); mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem); mSearchView.setOnQueryTextListener(this); mSearchView.setQueryHint(getString(R.string.text)); SearchAutoComplete searchAutoComplete = (SearchAutoComplete) mSearchView.findViewById(android.support.v7.appcompat.R.id.search_src_text); searchAutoComplete.setHintTextColor(mRes.getColor(android.R.color.white)); searchAutoComplete.setTextSize(14); return super.onCreateOptionsMenu(menu);}
I did rounded corner for Edit Text like this.
int searchPlateId = searchView.getContext().getResources().getIdentifier("android:id/search_plate", null, null); View searchPlate = searchView.findViewById(searchPlateId); searchPlate.setBackgroundResource(R.drawable.bg_white_rounded); int searchSrcTextId = getResources().getIdentifier("android:id/search_src_text", null, null); EditText searchEditText = (EditText) searchView.findViewById(searchSrcTextId); searchEditText.setTextColor(Color.BLACK); searchEditText.setHintTextColor(Color.LTGRAY); int closeButtonId = searchView.getContext().getResources().getIdentifier("android:id/search_close_btn", null, null); ImageView closeButtonImage = (ImageView) searchView.findViewById(closeButtonId); closeButtonImage.setColorFilter(ContextCompat.getColor(MainActivity.this, R.color.colorPrimary), PorterDuff.Mode.SRC_IN);
bg_white_background.xml:
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#ffffff"/> <corners android:radius="8dp"/></shape>
<SearchView android:id="@+id/searchView" android:layout_width="match_parent" android:queryHint="Serach" android:layout_height="match_parent"></SearchView>