toolbar 搜索功能
来源:互联网 发布:知乎lol dota 编辑:程序博客网 时间:2024/05/16 05:16
1.首先在menu文件中设置searchItem的属性
<item android:id="@+id/action_search" android:icon="@android:drawable/ic_menu_search" android:title="搜索" app:actionViewClass="android.support.v7.widget.SearchView" app:showAsAction="ifRoom|collapseActionView"/>
2.在search icon 所在的activity中加上下面的配置
<activity android:name=".SearchActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> <!-- 指定搜索接收搜索内容的activity -->
// 这个一定要加,之前按照官方文档一步一步操作,发现一只有问题,后来才知道缺少这个配置如果不加 searchManager.getSearchableInfo(getComponentName());返回null导致出错<meta-data
android:name="android.app.default_searchable"
android:value=".SearchResultsActivity"/></activity>
3.配置接受搜索关键字的activity 在这个activity中做一些对搜索结果的处理
<!-- searchview result --><activity android:name=".SearchResultsActivity" android:launchMode="singleTop"> <intent-filter> <action android:name="android.intent.action.SEARCH"/> </intent-filter> <!-- 一定要写在这个activity里 --> <meta-data android:name="android.app.searchable" android:resource="@xml/searchable"/></activity>
4.searchable.xml 在res中创建 xml文件夹 并在xml文件夹中 创建 searchable.xml文件
内容如下:
<searchable xmlns:android="http://schemas.android.com/apk/res/android" android:hint="@string/app_name" android:label="@string/app_name"/>hint:表示搜索框中的提示 注意: hint 和 label 这两个一定要写@string/.. 这种格式 如果直接写 “hello”这种会出问题。为什么呢?下面代码部分会分析。5.在searchActivity中添加代码
@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater menuInflater = getMenuInflater(); menuInflater.inflate(R.menu.pay_menu,menu); // Associate searchable configuration with the SearchView SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView(); CharSequence queryHint = searchView.getQueryHint(); SearchableInfo searchableInfo = searchManager.getSearchableInfo(getComponentName()); /** * searchableInfo 中label 和 hint 都是以id的形式保存的,所以在searchable.xml中一定要 * 写 @string/... 的形式赋值, 直接写"hint" 这种字符串是无效的。SearchableInfo 中保存这两个字符串的id
private final int mLabelId;private final int mHintId;*/searchView.setSearchableInfo(searchableInfo);
return true; }
6.在SearchResultsActivity中添加如下代码:@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_toolbar_search_result); handleIntent(getIntent());}// android:launchMode="singleTop"这个activity启动模式设置为 singleTop,因此要重写 onNewIntent这个方法@Overrideprotected void onNewIntent(Intent intent) { super.onNewIntent(intent); handleIntent(intent);}private void handleIntent(Intent intent) { if (Intent.ACTION_SEARCH.equals(intent.getAction())) { String query = intent.getStringExtra(SearchManager.QUERY);// query 就是在上一个activity中 搜索框中输入的搜索内容 }}
0 0
- toolbar 搜索功能
- easyui datagrid 如何嵌入以toolbar形式的搜索功能
- Toolbar:工具条,SearchView:搜索视图
- 自定义Toolbar实现搜索框和普通Toolbar切换
- easyui datagrid toolbar 添加搜索框
- 实现toolbar上的搜索栏
- android顶部(toolbar)搜索框实现
- android顶部(toolbar)搜索框实现
- FCKeditor的toolbar功能按钮 对应表
- 配置 FCKeditor的toolbar功能按钮
- 在VS2008中添加toolbar按钮功能
- Android5.0 之 ToolBar基础功能
- 使用ToolBar实现功能及原理
- Toolbar+DrawerLayout实现android侧滑页功能
- 仿织梦搜索搜索功能详解
- web功能测试-搜索功能
- ToolBar
- ToolBar
- 写在开始学习机器学习之前
- 【Day41】php版微信发红包接口用法示例
- python内置函数|类中的内置方法|字符串内置方法大全
- Windows平台下MySQL常用操作与命令
- CentOS的free命令
- toolbar 搜索功能
- Android四大组件之服务(service)
- JavaScript实现四种界面的九九乘法表
- 本地apt-get update failed || git failed
- C/C++使用strcpy报错解决方案
- Hibernate Inverse属性
- ORM原型概念
- 【Linux环境编程入门】四、文件操作的系统调用
- dataTables插件参数详解