`
z303729470
  • 浏览: 134099 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Searchable(一)

 
阅读更多
文章来源: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处理所有的用户输入,请使用各种回调函数和监听接口,具体参照http://developer.android.com/reference/android/widget/SearchView.html

当用户在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配置实例

    `searchable`配置通常与`SearchView`或`ActionBar`上的搜索框相结合,提供了一个用户友好的搜索体验。下面我们将深入探讨`searchable`配置的原理、实现方法以及如何创建一个简单的实例。 首先,我们需要在...

    Laravel开发-searchable

    在Laravel框架中,"searchable"特性是一个强大的工具,它允许开发者轻松地在数据库中进行复杂的查询和过滤,提供用户友好的搜索功能。"Laravel开发-searchable"指的是使用Laravel Eloquent ORM(对象关系映射)的一...

    Laravel开发-laravel-searchable

    在Laravel框架中,"laravel-searchable"是一个常见的扩展包,用于实现高效且灵活的数据库查询,特别是针对数据检索和搜索功能。这个扩展包使得开发者可以轻松地在模型上添加搜索条件,从而快速实现复杂的数据过滤和...

    Laravel开发-searchable 以 Trait 的形式为 Eloquent 模型增加搜索功能

    `searchable` 是一种常见的需求,特别是在处理大量数据时,快速、高效的搜索功能至关重要。本篇将详细介绍如何通过 Trait(特质)的方式为 Eloquent ORM(对象关系映射)的模型增加搜索功能。 首先,让我们理解一下...

    Laravel开发-eloquent-searchable .zip

    Eloquent/Searchable是Laravel的一个扩展包,它增强了Eloquent模型的搜索功能,使开发者能够更方便地实现复杂的查询过滤和全文搜索。下面将详细解释这个扩展包的相关知识点。 1. Eloquent ORM: Eloquent是Laravel...

    Laravel开发-eloquent-searchable

    这时,"Laravel开发-eloquent-searchable"就是一个非常有价值的扩展,它为Eloquent模型添加了搜索功能,特别是在大型数据集和需要实时搜索的情况下。 "Eloquent searchable"库旨在简化在Laravel应用中集成全文搜索...

    Python库 | SQLAlchemy-Searchable-0.3.2.tar.gz

    而 SQLAlchemy-Searchable 是一个 SQLAlchemy 的扩展插件,它为 ORM 对象引入了全文搜索功能,使得在 Python 应用中实现高效、灵活的数据库查询变得更加容易。 **1. SQLAlchemy-Searchable 的核心功能** ...

    Laravel开发-eloquent-simple-searchable

    "Laravel开发-eloquent-simple-searchable" 是一个专门为Eloquent设计的简单搜索功能扩展,它使得在数据库中进行高效、灵活的搜索变得更加容易。 1. **Eloquent ORM**: Eloquent ORM是Laravel提供的强大数据库...

    sqlalchemy-searchable:SQLAlchemy的全文本搜索模型。 仅支持PostgreSQL

    `sqlalchemy-searchable` 是 SQLAlchemy 的一个扩展,专门用于实现数据库中的全文本搜索功能,但请注意,这个扩展目前只支持 PostgreSQL 数据库。 PostgreSQL 是一个开源的关系型数据库管理系统,以其强大的功能和...

    fulltext searchable

    标题 "fulltext searchable" 暗示我们关注的是关于全文搜索的技术。全文搜索引擎允许用户输入任意文本,并在大型数据集中快速查找包含这些文本的文档。这通常涉及到索引、查询处理和相关性排序等多个环节。 描述中...

    Laravel开发-searchable .zip.zip

    这个压缩包文件"Laravel开发-searchable .zip.zip"可能包含了一系列关于如何在Laravel项目中构建高效、灵活的搜索功能的教程、代码示例或者库。下面将详细讨论在Laravel中实现搜索功能的关键知识点。 1. **Eloquent...

Global site tag (gtag.js) - Google Analytics