




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Android-浮动搜索框(SearchManager浮动搜索框的使用其实并不难,而是在于它的配置非常之繁琐,对于它的使用主要是方便开发者对于程序中有搜索业务时,更好的设计UISearchManager具体使用步骤如下:(1)配置searchbar的相关信息,新建一个位于res/xml下的一个searchable.xml的配置文件,如默认值、是否有搜索建议或者语音搜索。田E代码<searchablexmlns:android=http:res/android<!-label为搜索框上方的文本,hint搜索框里面的提示文本,显示label->android:label=&quo
2、t;string/search_label”android:hint="string/search_hint”android:searchMode="showSearchLabelAsBadge”<!-语音搜索配置->android:voiceSearchMode="showVoiceSearchButton|launchR="freeform”ecognizer"android:voiceLanguageModelandroid:voicePromptText="string/search_invoke”<!-配置
3、搜索建议,配置错误将不会显示,这里的searchSuggestAuthority的值必须是继承自SearchRecentSuggestionsProvider的完整路径名->="com.android.cbin.Seaandroid:searchSuggestAuthorityrchSuggestionSampleProvider'android:searchSuggestSelection/>(2)manifest.xml配置,搜索结果处理的Activity将出现两种情况,一种是从其他Activity中的searchbar打开一个Activtiy专门处理搜索结果
4、,第二种是就在当前Activity就是处理结果的Activity,先介绍第一种配置:代码<activityandroid:name="SearchResultActivity"><intent-filter<actionandroid:name="ent.action.SEARCH"></action></intent-filter><!-指定上面的searchable.xml文件-><meta-dataandroid:resource="xml/se
5、archable"android:name="android.app.searchable"></meta-data></activity><!-为了使每一个Activity都能使用searchbar,一定要将这个标签放到启动Activity中,里面的value指定的是前面的搜索结果Activity-><meta-dataandroid:name="android.app.default_searchable"android:value=".SearchResultActivity&qu
6、ot;/>(3)搜索建议在manifest.xml中相关的配置<!-之前searchable.xml中有个searchSuggestAuthority的值其实和这里的authorities指向的者B是name中所关联的SearchSuggestionSampleProvider,他是一个SearchRecentSuggestionsProvider的子类->providerandroid:name="SearchSuggestionSampleProvider"android:authorities="com.android.cbin.Searc
7、hSuggestionSampleProvider"></provider>上面authorities指向的都是name中所关联的SearchSuggestionSampleProvider,他是一个SearchRecentSuggestionsProvider的子类代码publicclassSearchSuggestionSampleProviderextendsSearchRecentSuggestionsProviderfinalstaticStringAUTHORITY="com.android.cbin.SearchSuggestionSampl
8、eProvider"finalstaticintMODE=DATABASE_MODE_QUERIES;publicSearchSuggestionSampleProvider()super();setupSuggestions(AUTHORITY,MODE);)(4)为了能够使用searchbar我们必7K重写Activity的onSearchRequested的方法,在界面上启动一个searchbar但是这个动作不会自动触发,必须通过一个按钮或者菜单的点击事件触发;代码OverridepublicbooleanonSearchRequested()Stringtext=etdata
9、.getText().toString();Bundlebundle=newBundle();bundle.putString("data",text);/打开浮动搜索框(第一个参数默认添加到搜索框的值)/bundle为传递的数据startSearch("mm",false,bundle,false);/这个地方一定要返回真如果只是super.onSearchRequested方法不但/onSearchRequested(搜索框默认值)无法添加到搜索框中,bundle也无法传递出去returntrue;(5)接收query和bundle、保存query值
10、(即搜索建议的列表值)代码publicvoiddoSearchQuery()finalIntentintent=getIntent();/获得搜索框里值Stringquery=intent.getStringExtra(SearchManager.QUERY);tvquery.setText(query);/保存搜索记录tSuggestions(thisSearchSuggestionSampleProvider.AUTHORITY,SearchSuggestionSampleProvider.MODE);suggestions.saveRecentQuery(query,null);if(I
11、ntent.ACTION_SEARCH.equals(intent.getAction()/获取传递的数据Bundlebundled=intent.getBundleExtra(SearchManager.APP_DATA);if(bundled!=null)Stringttdata=bundled.getString("data");tvdata.setText(ttdata);elsetvdata.setText("nodata");之前说到了处理结果的Activity将可能出现的两种情况的两种,现在就处理第二种状况,就是假如invokesearch
12、bar的Activity同时也是处理搜索结果的Activity,如果按照之前的方式处理则会出现一种情况,搜索一次就实例化一次Activity,当按返回键的时候会发现老是同一个Activity,其实为了使它只有一个实例化对象,只需简单的配置和代码就能实现第一:在处理搜索结果Activity的manifest.xml中添加android:launchMode="singleTop"属性第二:重写Activity的onNewIntent(Intentintent)代码OverridepublicvoidonNewIntent(Intentintent)super.onNewInt
13、ent(intent);/获得搜索框里值Stringquery=intent.getStringExtra(SearchManager.QUERY);tvquery.setText(query);/保存搜索记录SearchRecentSuggestionssuggestions=newSearchRecentSuggestions(this,SearchSuggestionSampleProvider.AUTHORITY,SearchSuggestionSampleProvider.MODE);suggestions.saveRecentQuery(query,null);if(Intent.
14、ACTION_SEARCH.equals(intent.getAction()/获取传递的数据Bundlebundled=intent.getBundleExtra(SearchManager.APP_DATA);if(bundled!=null)Stringttdata=bundled.getString("data");tvdata.setText(ttdata);elsetvdata.setText("nodata");相关知识:上面讲到了将最近的搜索值添加到搜索建议中,但却没有提到如果清理搜索建议中的值,与保存相似,SearchRecentSuggestion对象提供了一个clearHistory()方法代码newS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 科技教育中的网络社交行为与信息传播
- 电梯合同范本
- 围墙栏杆合同范本
- 科技引领未来智能化的电影节活动策划
- 科技创新企业分析与实践引领教育领域变革
- 2025至2030年中国草莓专用型冲施肥数据监测研究报告
- 2025至2030年中国船用柴油机海水泵数据监测研究报告
- 2025至2030年中国腌制蔬菜数据监测研究报告
- 撤销押金合同范本
- 二零二五年度学历提升与学术交流合作协议
- 2025年湖南理工职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 人教版小学数学三年级下册第一单元位置与方向一单元测试
- 雅礼中学2024-2025学年初三创新人才选拔数学试题及答案
- 《草船借箭》课本剧剧本-4篇
- 数学原来这么有趣
- 中国传媒大学《当代电视播音主持教程》课件
- 2022新教科版六年级科学下册全一册全部教案(共28节)
- 机器视觉论文英文
- 河南省县普通高中学生学籍卡片
- 就业劳动合同登记名册
- 道路工程案例分析
评论
0/150
提交评论