文章来源:http://developer.android.com/guide/topics/search/search-dialog.html

一、前言:
Android为程序的搜索功能提供了统一的搜索接口,search dialog和search widget。
search dialog只能为于activity窗口的上方,search widget可以位于任何位置。
search dialog和search widget都会向我们的searchable activity发送消息(主要是搜索关键字)。
通过这种方式,可以为任何activity加入search dialog和search widget,系统可以启动合适的activity来处理搜索并显示结果。
search dialog和search widget的其他属性如下:
A:声音搜索。
B:根据最近的搜索结果,给出搜索建议。
C:根据我们程序的实际搜索结果,给出搜索建议。
注1:search widget在 Android 3.0或更高版本才可用
注2:searchable activity才是真正执行搜索的。
二、基本知识
在开始实现搜索功能之前,请决定使用search dialog,还是search widget.
他们的搜索功能特性都有一样,但是他们还有微小区别。
A,search dialog是一个被系统控制的UI组件。但他被用户激活的时候,它总是出现在activity的上方,如图一所示。
B,Android系统负责处理search dialog上所有的事件,当用户提交了查询,系统会把这个查询请求传输到我们的searchable activity,
让searchable activity在处理真正的查询。当用户在输入的时候,search dialog还能提供搜索建议。
C,search widget是SearchView的一个实例,你可以把它放在你的布局的任何地方。
D,默认的,search widget和一个标准的EditText widget一样,不能做任何事情。
但是你可以配置它,让android系统处理所有的按键事件,把查询请求传输给合适的activity,可以配置它让它像search dialog一样提供search suggestions。
E,search widget在 Android 3.0或更高版本才可用. search dialog没有此项限制
提示: 如果你想自己在search widget处理所有的用户输入,请使用各种回调函数和监听接口,具体参照SearchView 。
图一:
当用户在search dialog或search widget中执行一个搜索的时候,系统会创建一个Intent,并把查询关键字保存在里面,
然后启动我们在AndroidManifest.xml中声明好的searchable activity,并把Intent传送给它。
实现一个可以搜索的程序,主要需要以下几个部份:
(1),search dialog or widget的配置文件。
配置一个XML文件用于配置search dialog 或widget的设置。对于search dialog,该配置文件的名字一般约定为searchable.xml
(2),searchable activity。
searchable activity用于接收搜索关键字,并进行数据搜索和显示搜索结果。
(3),搜索条。search dialog 或search widget
* The search dialog
默认的,search dialog是隐藏。当我们按下了SEARCH键或在程序中调用onSearchRequested(),它将出现在屏幕的上方.
* a SearchView widget
使用search widget的时候,你可以把该搜索条放在我们activity的任何地方。
Instead of putting it in your activity layout, however, it's usually more convenient for users as an action view in the Action Bar.
三、创建配置文件searchable.xml
配置文件说明了search dialog 或widget的一些属性。包括UI,以及suggestions 和voice search behave的一些属性。
该文件一般约定为searchable.xml并位于res/xml/目录下。
searchable.xml必须以<searchable>element 作为根节点,且至少定义一个属性。
比如,示例1:
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/app_label"
android:hint="@string/search_hint" >
</searchable>
android:label是唯一必须定义的属性。它指向一个字符串,它应该是应用程序的名字。
实际上该label也只有在search suggestions for Quick Search Box可用时才可见。
这时该label在系统设置的Searchable项的列表中可见。
虽然android:hint属性不是必须,但是还是推介总是定义它。它是search box用户输入前输入框中的提示语。
<searchable> 还有其他的一些属性。如果不需要search suggestions 和voice search的话,大多数的属性是不需要的。
关于searchable.xml更多内容请参考:http://developer.android.com/guide/topics/search/searchable-config.html

Searchable(搜索功能)(转)相关推荐

  1. android搜索功能xml,Android_Android ActionBar搜索功能用法详解,本文实例讲述了Android ActionBar - phpStudy...

    Android ActionBar搜索功能用法详解 本文实例讲述了Android ActionBar搜索功能用法.分享给大家供大家参考,具体如下: 使用ActionBar SearchView时的注意 ...

  2. 如何构建具有实时搜索功能的React Native FlatList

    by Vikrant Negi 通过Vikrant Negi 如何构建具有实时搜索功能的React Native FlatList (How to build a React Native FlatL ...

  3. android实现通知栏搜索功能,actionBar+SearchView实现搜索功能

    在项目中有使用到ActionBar和SearchView,下面做一个总结以方便以后使用. 一.搜索控件:SearchView(SDK Version >=11) (一)比较重要的方法和属性: 1 ...

  4. android开发访问百度搜索,Android开发如何添加搜索功能———大神求救啊

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 网上的添加搜索功能没有给全代码,反正这些代码在我的程序里就出错 下面上代码- - searchable.xml 放在res/xml里的 android=& ...

  5. php 搜索引擎 分词_PHP 实现中文分词搜索功能

    中文分词介绍 众所周知,英文是以词为单位的,词和词之间是靠空格隔开,而中文是以字为单位,句子中所有的字连起来才能描述一个意思.例如,英文句子I am a student,用中文则为:"我是一 ...

  6. Elastic Searchable snapshot功能初探 三 (frozen tier)

    文章目录 演示思路 准备数据 创建快照仓库与快照 关联快照仓库与快照 mount searchable snapshot 挂载选项 full_copy shared_cache 测试可搜索快照 总结 ...

  7. PHP 实现中文分词搜索功能

    中文分词介绍 众所周知,英语是基于单词的,单词和单词之间用空格隔开,而中文是基于单词的.句子中的所有单词都可以连接起来以描述含义.例如,英文句子"我是学生"将用中文表示" ...

  8. Hexo集成Algolia实现搜索功能

    2年前搭建的hexo博客好久没有维护了,一看 hexo 以及先前使用 butterfly 主题已经更新好几个版本了,看介绍在速度性能上有了很大的提高,于是打算给 hexo 升个级,整理整理翻翻新.通过 ...

  9. gi克隆github文件_如何构建GitHub文件搜索功能的克隆

    gi克隆github文件 In this article, we will build a project that mimics the lesser known but awesome file ...

最新文章

  1. python读数据-python中如何读入数据
  2. Coursera公开课笔记: 斯坦福大学机器学习第二课“单变量线性回归(Linear regression with one variable)”
  3. cov/cor中有遗漏值_协调遗漏的效果–使用简单的NIO客户端/服务器测量回送延迟...
  4. Linux C高级编程——文件操作之库函数
  5. 秒懂系列 | 史上最简单的Python Django入门教程
  6. 10条途径迅速提高你的生活
  7. 【C++基础学习】关于C++静态数据成员
  8. mq java 开发_Java后台开发ActiveMQ使用指南
  9. linux内核rop姿势详解,Linux内核ROP姿势详解(二)
  10. vc6.0转vc2010编程中遇到的问题
  11. SQLite jdbc驱动
  12. vbs代码未结束的字符串常量
  13. sis最新ip地址2020_2020 前端面试 | 第一波面试题总结
  14. MATLAB公式希腊字母表
  15. 小马激活工具拒绝访问cannot open file c:\oemsf解决方法
  16. 数字图像处理:线性和非线性滤波的平滑空间滤波器(Smoothing Spatial Filters)
  17. 域用户不准更改计算机名,请教高手,域环境下如何不退域修改计算机名?
  18. mmdetection训练、测试
  19. VBA禁止更改工作表名称
  20. IAR编译出现Error[Pe147]: declaration is incompatible with “__interwork __vfp int dir_get_dout()“ 报错

热门文章

  1. python习题:写一个备份数据库的脚本
  2. zbb20170613 linux 安装 mysql
  3. 网易有毛病,我的账号被锁了,去解锁时候又几把提示不成功,浪费劳资感情啊
  4. HL7 ADT Message Sample
  5. JQuery DataTables插件汉化
  6. 字符编码笔记:ASCII,Unicode和UTF-8(转) + BASE64
  7. 递归神经网络不可思议的有效性
  8. 微信7.0.4内测版大更新!漂流瓶彻底成为历史
  9. 《汇编语言》实验五课程
  10. Sublime P4语法高亮设置