关于searchView的黑框去除问题
发现很多人都遇到了这个问题,希望可以帮助到你们
简单粗暴直接上代码
adapter = new MyAdapter(this,R.layout.insect,mBackData);
//mBabckDate是自定义的过滤内容( List<viewContent> mBackData = new ArrayList<viewContent>(); )
listView.setAdapter(adapter);//适配器
mSearchView = (SearchView) findViewById(R.id.searchView);
//设置false无法自动获取焦点,防止软键盘自动跳出。
mSearchView.setFocusable(false);
//SearchView 修改字体颜色和Hint颜色
int id = mSearchView.getContext().getResources()
.getIdentifier("android:id/search_src_text", null, null);
TextView textView = (TextView) mSearchView.findViewById(id);
textView.setTextColor(Color.BLACK);
textView.setHintTextColor(Color.parseColor("#CCCCCC"));
textView.setHintTextColor(getResources().getColor(R.color.black));
// 设置搜索文本监听
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
// 当点击搜索按钮时触发该方法
public boolean onQueryTextSubmit(String query) {
return false;
}
// 当搜索内容改变时触发该方法
public boolean onQueryTextChange(String newText) {
if (!TextUtils.isEmpty(newText)){//判断输入是否为空
listView.setFilterText(newText);//进行过滤
}else{
listView.clearTextFilter();
}
return true;
}
});
上面的监听事件中会自动会自动触发黑框,其实修改非常简单,只要不用listview自带的过滤机制就好,通过适配器过滤就可以完美地解决这个问题。
public boolean onQueryTextChange(String newText) {
adapter.getFilter().filter(newText);//通过适配器过滤
return true;
}
希望可以帮助到您!