Search (搜索)是Android平台的一个核心功能之一,用户可以在手机搜索在线的或是本地的信息。Android平台为所有需要 提供搜索或是查询功能的应用提供了一个统一的Search Framework来帮助实现Search功能。Search Framework的UI可以有两种形 式:
屏幕顶部的Search Dialog:如Google Map提供的搜索条。
可以嵌到ContentView中的SearchView,应用可以将它放在屏幕上任何地方。
不管采用那种UI,Android系统都可以通过向某个指定Activity发送需要查询的内容来帮助应用实现查询功能。同时Android 也支持查询提示,如下图所示:
除此之外,Android查询UI可以支持:
语音查询
根据用户输入提供查询提示列表
支持应用自定义查询提示列表来匹配用户输入
在系统全局搜索(System-wide Quick Search Box)提供你的应用相关的查询提示列表
Invoke Search介绍了如何使用Search Framework 并采用Search dialog 的方式在屏幕顶部显示查询条。下面结合例子介绍 使用Search Framework的一般步骤:
Create a Search Interface
本例采用屏幕顶部Search Dialog的方式。在这 种方式下,Android操作系统接管所有Search Dialog的事件,当用户提交查询后,Android系统将给支持的用来处理查询的 Activity发送消息。Search Dialog可以提供查询提示列表来匹配用户输入。
用户提交查询后,Android系统构造一个 Intent并把用户的查询内容放在这个Intent中。然后Android启动你定义的用来处理用户查询的Activity(称为Searchable Activity),并把这个Intent发给该Activity。为了能够使用Android系统提供的Search Framework.需要以下几步:
1. Creating a Searchable Configuration
首先定义一个Searchable configuration,用于描述Search Dialog 的一些属性 ,该描述文件按惯例通常命名为searchable.xml 并定义在/res/xml 目录下。
<searchable xmlns:android=” http://schemas.android.com/apk/res/android”
android:label=”@string/search_label”
android:hint=” @string/search_hint”
android:searchMode=”showSearchLabelAsBadge”
android:voiceSearchMode=” showVoiceSearchButton|launchRecognizer”
android:voiceLanguageModel=”free_form”
android:voicePromptText=” @string/search_invoke”
android:searchSuggestAuthority=”com.example.android.apis.SuggestionProvider”
android:searchSuggestSelection=” ? ”
/>
只有android:label是必须的,一般定义为应用程序的名称。尽 管不是必须的,一般也会定义android:hint。这个属性定义查询框没有任何输入时的背景文字。如上图中的”Search the dictionary” 。本例中为“Search Demo Hint”来提示用户可以输入的内容。