简介
SearchView V7包下的兼容控件,控件实现的是搜索框功能,可以和menu+toolbar一起使用(网易云音乐本地搜索的效果),也可以单独使用(本文为单独使用的方式)。控件效果为一开始默认显示的是一个搜索图标点击这个图标之后展开为一个搜索输入框。
使用
1 .设置大小
在布局文件中添加 <android.support.v7.widget.SearchView/>控件 给其设置宽高(这里的宽高是控件展开为搜索框之后的宽高,并不是一开始的搜索图标的宽高)。
2.修改默认图标
可在布局文件中通过 app:searchIcon属性修改一开始显示的默认搜索图标。
app:searchIcon="@drawable/ic_search" //修改搜索图标
修改搜索框的背景 queryBackground 可以为color也可以设置一个shape
app:queryBackground="@drawable/shape_searview_bg" // 搜索框的背景
关闭图标修改 closeIcon 默认的搜索和关闭图标都是灰色的在使用时可以通过这个属性去替换为自己的图标。
app:closeIcon="@drawable/ic_searchview_close"
在使用的时候发现输入框中字体默认的颜色为白色,如果修改了浅色背景输入框中的字体就看不见了,然后看了一下在布局文件中好像没有可以直接修改搜索框字体颜色的属性,百度了一下在这篇文章中找到了解决方案。
大概思路是在Activity中先获取到SearchView的对象实例,然后通过SearchView控件再去 findView 就可以获取到一个EditTextView对象,这就是搜索框中的EditText了。
person_sv = (SearchView) view.findViewById(R.id.person_sv);
EditText textView =(EditText)person_sv.findViewById(android.support.v7.appcompat.R.id.search_src_text);
// 设置SearchView的字体颜色
textView.setHintTextColor(ContextCompat.getColor(getActivity(), R.color.dialog_item_content)); textView.setTextColor( ContextCompat.getColor(getActivity(),R.color.dialog_item_content));
3.搜索内容监听
在Activity中获取到控件实例之后可以通过setOnQueryTextListener()方法添加搜索框中内容发生变化和点击键盘上搜索按钮的监听。
person_sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override public boolean onQueryTextSubmit(String s) {
return false;//点击搜索的监听
}
@Override public boolean onQueryTextChange(String s) {
keyword = s;
isSerch = true;
addData(isSerch);
return true;//内容发生变化的监听,这里传入的 s 是搜索框中的内容
}
});