在实际的业务开发中,我们通常会在顶部的导航栏加入搜索的功能,如微信顶部的导航栏,这时我们可以Toolbar结合SearchView来使用
Toolbar的具体使用见:http://blog.csdn.net/sinat_35159441/article/details/76794117
使用步骤如下:
一:如何在Toolbar中假如SearchView
使用Toolbar的时候,我们经常要跟menu打交道,我们只要指定action按钮的某个属性就能将SearchView加入到Toolbar中,资源文件如下:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/backUp"
android:title="Backup" app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="always" />
</menu>
在我们的item中加入了
app:actionViewClass=”android.support.v7.widget.SearchView” 这个属性,就能将该action 按钮变为SearchView
二:初始化SearchView,设置其样式
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar, menu);
MenuItem item = menu.findItem(R.id.backUp);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
//设置搜索栏的默认提示
searchView.setQueryHint("请输入商品名称");
//默认刚进去就打开搜索栏
searchView.setIconified(false);
//设置输入文本的EditText
SearchView.SearchAutoComplete et = (SearchView.SearchAutoComplete) searchView.findViewById(R.id.search_src_text);
//设置搜索栏的默认提示,作用和setQueryHint相同
et.setHint("输入商品名或首字母");
//设置提示文本的颜色
et.setHintTextColor(Color.WHITE);
//设置输入文本的颜色
et.setTextColor(Color.WHITE);
//设置提交按钮是否可见
//searchView.setSubmitButtonEnabled(true);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
Toast.makeText(MainActivity.this, "您输入的文本为" + query, Toast.LENGTH_SHORT).show();
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});
return true;
}
MenuItem item = menu.findItem(R.id.backUp);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(item); 为得到SearchView的实例,为固定写法,没什么好说的。这里说一下searchView.setOnQueryTextListener方法。
该方法是输入文本的回调和提交时的回调, onQueryTextSubmit(String query)是当文本提交的时候的回调,这里我们弹出一条吐司,onQueryTextChange(String newText)是当输入文本发生改变的时候回调。
运行效果如下: