实例效果图:
主要代码:(使用v7 包)
activity_main.xml
<android.support.v7.widget.SearchViewandroid:id="@+id/searchView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:autofillHints="查找" />
MainActivity.java
SearchView searchView;
// 获取搜索框searchView = findViewById(R.id.searchView);
// 搜索框的一些方法设置
// 1. 文本事件 {包括提交事件,文本改变事件}searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {@Overridepublic boolean onQueryTextSubmit(String s) { // 点击软件盘搜索按钮会弹出 吐司Toast.makeText(MainActivity.this, "提交", Toast.LENGTH_SHORT).show();return false;}// 搜索框文本改变事件@Overridepublic boolean onQueryTextChange(String s) {// 文本内容是空就让 recyclerView 填充全部数据 // 可以是其他容器 如listViewif (TextUtils.isEmpty(s)) { // 文本工具 检测是否为空,检测空,是输入文本改变 并且为空时触发,刚点击时候虽然为空,但是文本内容没有改变// 设置 容器 的更新}return false;}});
// 2. 设置 hint 文字searchView.setQueryHint("匹配任意标题和内容");
// 3. 设置点击 关闭 叉叉 的监听事件searchView.setOnClickListener();
//设置最大宽度searchView.setMaxWidth(500);
//设置是否显示搜索框展开时的提交按钮 ,就是一个 > searchView.setSubmitButtonEnabled(true);
SearchView有三种默认展开搜索框的设置方式,区别如下:
/*------------------ ------------------*/
//设置搜索框直接展开显示。左侧有放大镜(在搜索框中) 右侧有叉叉 可以关闭搜索框
searchView.setIconified(false);
//设置搜索框直接展开显示。左侧有放大镜(在搜索框外) 右侧无叉叉 有输入内容后有叉叉 不能关闭搜索框
searchView.setIconifiedByDefault(false);
//设置搜索框直接展开显示。左侧有无放大镜(在搜索框中) 右侧无叉叉 有输入内容后有叉叉 不能关闭搜索框
searchView.onActionViewExpanded();
总结 ,自定义 搜索框才是正道
MaterialDesign之SearchView全面解锁
官方文档