在这几天的开发学习中,看到一个需求,就是要在导航栏中添加搜索框,于是乎就各种查资料,学习以及使用.
导航栏有两种实现方式,一种是用ActionBar,另一种是用ToolBar.(我在这里是用的ActionBar)
添加的方法;
简单说一下 showAsAction的其他属性,如果设置成never的话,菜单栏上就有三个竖直的小白点菜单
alaways:一直显示在溢出菜单外
ifRoom:溢出菜单外如果有空间,就显示在溢出菜单外
never:一直显示在溢出菜单内
自己设置看下效果就立刻懂了
在activity中的代码如下
[代码]java代码:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 | @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu, menu); // 获得menu中指定的菜单项 MenuItem item = menu.findItem(R.id.search); // 获得菜单项中的SearchView SearchView searchView = (SearchView) item.getActionView(); // 为searchView添加事件 searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override // 输入后点击回车改变文本 public boolean onQueryTextSubmit(String query) { return false; } @Override // 随着输入改变文本 public boolean onQueryTextChange(String newText) { return false; } }); return true; } |
SearchView组件的其他常用方法如下:
①setIconifiedByDefault(boolean iconified) ===> 设置搜索框默认是否自动缩小为图标。
②setOnQueryTextListener(SearchView,OnQueryTextListener listener) ===> 为搜索框设置监听器
③setSubmitButtonEnabled(boolean enabled) ===> 设置是否显示搜索按钮
④setQueryHint(CharSequence hint) ===> 设置搜索框内的默认显示的提示文本
做到这一步,搜索框基本就出来.,谈一下笔者遇到的空指针问题
笔者在这边运行了三次,每次都是空指针,用了好几种方法都是能确定了空指针的变量,却不知道该怎么解决.
于是乎又找度娘寻答案去了,终于给我找到了.
原因就是在menu布局中不正确使用V7包
常规的写法;android:actionViewClass="android.support.v7.widget.SearchView"
正确的写法;app:actionViewClass="android.support.v7.widget.SearchView"
命名空间采用;xmlns:app="http://schemas.android.com/apk/res-auto"
这样问题就解决了!