读书笔记,在Toolbar上的菜单项实现SearchView
来源:互联网 发布:绿盾加密软件 编辑:程序博客网 时间:2024/05/18 15:24
相比于直接在布局文件中添加SearchView控件,让SeachView以菜单项的形式体现出来比较复杂,具体步骤如下
- 在菜单布局文件中定义搜索项
最后一项属性非常重要<item android:id="@+id/menu_search" android:orderInCategory="1" app:showAsAction="always" android:title="@string/search_title" app:actionViewClass="android.support.v7.widget.SearchView" />
- 在res\xml文件中新建文件searchable.xml,设置搜索框的样式代码
<?xml version="1.0" encoding="utf-8"?><searchable xmlns:android="http://schemas.android.com/apk/res/android" android:label="@string/search_label" android:hint="@string/search_hint" android:inputType="text" android:searchButtonText="@string/search" ></searchable>
!!!注意:其中的标签和提示必须写字符串资源中的id,不能直接写字符串,如果直接写字符串,在后面可能会出现问题 实测 - 在AndroidManifest.xml文件中加入搜索结果activity节点定义,并指定action和meta-data
<activity android:name=".NewsSearchAcitivity"> <intent-filter> <action android:name="android.intent.action.SEARCH"/> </intent-filter> <meta-data android:name="android.app.searchable" android:resource="@xml/searchable"/> </activity>
- 在搜索框所在的activity代码中初始化搜索框,并关联搜索动作对应的结果Activity
private void initSearchView(Menu menu){ //获取menu中搜索item的单个实例 MenuItem menuItem = menu.findItem(R.id.menu_search); //获取搜索item的View 并把它转为SearchView SearchView searchView = (SearchView) MenuItemCompat.getActionView(menuItem); //在布局文件中添加控件的获取方式 //SearchView searchView = (SearchView) findViewById(R.id.search_view); if(searchView == null){ Log.d(TAG, "fail to get SearchView"); }else { if(getIntent() != null){ //设置是否将搜索视图默认折叠为图标,当前不设置 searchView.setIconifiedByDefault(getIntent().getBooleanExtra("collapse",false)); }else { searchView.setIconifiedByDefault(false); } //设置是否启用完成图标,当前设置 searchView.setSubmitButtonEnabled(true); //得到搜索管理器实例 SearchManager manager = (SearchManager) getSystemService(SEARCH_SERVICE); //可以根据组件启动搜索结果活动 ComponentName name = new ComponentName(this,NewsSearchAcitivity.class); //检查搜索结果活动是否可到达 SearchableInfo info = manager.getSearchableInfo(name); if(info == null){ Log.d(TAG, "fail to get result"); } //设置搜索动作的定义 searchView.setSearchableInfo(info); //系统id,不需要到布局文件中定义,当初不懂这个id走了很多弯路 private SearchView.SearchAutoComplete sac_key; sac_key = searchView.findViewById(R.id.search_src_text); sac_key.setTextColor(Color.BLACK); sac_key.setHintTextColor(Color.BLACK); } }
- 调用以上方法
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.tab_first_menu,menu); initSearchView(menu);//再次调用方法 return true; }
- 搜索结果的获取
Intent intent = getIntent(); if(intent != null && intent.getAction().equals(Intent.ACTION_SEARCH)){ String ori_kw = intent.getStringExtra(SearchManager.QUERY);
阅读全文
0 0
- 读书笔记,在Toolbar上的菜单项实现SearchView
- Toolbar结合SearchView的使用
- searchview在toolbar中使用基础
- android toolbar中searchView的使用
- ToolBar和SearchView的使用总结
- android:ToolBar和SearchView的使用总结
- ToolBar和SearchView的使用总结
- Toolbar结合DrawerLayout实现的抽屉菜单
- 在控件上右键菜单的实现
- 在控件上右键菜单的实现
- SearchView结合Toolbar 筛选RecyclerView中的内容,类似知乎、google play实现的效果
- SearchView结合Toolbar 筛选RecyclerView中的内容,类似知乎、google play实现的效果
- ToolBar控件的使用<一> 通过菜单项设置ToolBar
- ToolBar控件的使用<二> 不通过菜单项设置ToolBar
- Android下利用ToolBar+SearchView实现仿微信搜索框效果
- toolbar上menu菜单的显示与隐藏
- 在12864上实现菜单
- android ToolBar + SearchView
- 裂墙干货之jieba,wordcloud,nltk下载及安装
- idea创建maven项目
- 20171115_工作记录
- 老杨驴肉馆
- 积极准备(面试)
- 读书笔记,在Toolbar上的菜单项实现SearchView
- 【hibernate】 深度学习hibernate
- linux中的文件
- 暴力枚举H
- sts中导入的maven项目后带叹号update也解决不了问题
- deepmind_lab 安装vs2015是用来编译c++和c语言
- Python3 数据可视化之matplotlib、Pygal、requests
- Quartz 任务调度机制笔记——01
- bs4库的安装与使用