自定義SearchView的搜索圖標和字體屬性相對復雜一些,記下來。
一、自定義SearchIcon
1、API版本低於21:版本小於21時,要修改SearchIcon比較復雜,需要先獲取到SearchView的ImageView,然后為ImageView設置圖片,具體代碼如下:
(1)初始化SearchView控件
mSearch = (SearchView) view.findViewById(R.id.search);
(2)設置自定義的搜索圖標
if(mSearch==null){ return; }else{ //獲取ImageView的id int imgId = mSearch.getContext().getResources().getIdentifier("android:id/search_mag_icon",null,null); //獲取ImageView ImageView searchButton = (ImageView)mSearch.findViewById(imgId); //設置圖片 searchButton.setImageResource(R.drawable.search); //不使用默認 mSearch.setIconifiedByDefault(false); }
2、API版本大於21時,就很方便了,直接在layout文件中為SearchView設置屬性searchIcon即可啦。
android:searchIcon="@drawable/search"
二、自定義字體顏色和大小,也可以修改SearchView中的提示文字的顏色
1、初始化SearchView控件,同上。
2、獲取到SearchView的TextView,然后就可以修改其屬性了,代碼如下。
if(mSearch==null){ return; } else{ //獲取到TextView的ID int id = mSearch.getContext().getResources().getIdentifier("android:id/search_src_text",null,null); //獲取到TextView的控件 TextView textView = (TextView) mSearch.findViewById(id); //設置字體大小為14sp textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);//14sp //設置字體顏色 textView.setTextColor(getActivity().getResources().getColor(R.color.search_txt_color)); //設置提示文字顏色 textView.setHintTextColor(getActivity().getResources().getColor(R.color.search_hint_color)); }
三、最終效果圖:

