background image

3. android:label="@string/searchLabel" 

android:hint="@string/searchHint">

4. </searchable>

上面的配置文件中,除

android:hint 属性外,其它都是一个搜索对话框必须的配置项,

android:label 是一个必须的属性,它的值为一个 string 资源引用,不能直接用字符串,
通常会是应用程序的名称(尽管它是一个必须的属性,但通常情况下是不显示出来的,除
非你开启了搜索建议功能)。

android:hint 是配置搜索框的输入提示信息,也必须引用

string.xml 中配置的字符串资源,不能直接使用字符串。
可以配置很多的属性,但大部分属性都只是在使用搜索建议和语音搜索时进行配置,尽管
如此,我们建议你一定要配置

android:hint,用于提示用户需要输入的信息。

接下来,你需要把这个配置文件放到你的应用程序中。

创建一个可用于搜索的

Activity

当用户从一个搜索框执行搜索时,搜索管理器(

Search Manager)会通过

ACTION_SEARCH Intent 把要搜索的内容(关键字)发送到一个可执行搜索的 Activity。
这个

Acitivity 查询数据并显示结果。

定义一个可搜索的

Activity

如果你还没有准备好,那么就创建一个用来执行搜索的

Activity,声明它可以响应

ACTION_SEARCH Intent ,并且增加搜索框配置信息。为此,你需要添加一个元素和一个
元素在你的

manifest 文件中的节点。如下所示:

1. <application ... >
2. <activity android:name=".MySearchableActivity" >
3. <intent-filter>
4. <action android:name="android.intent.action.SEARCH" />
5. </intent-filter>
6. <meta-data android:name="android.app.searchable"
7. android:resource="@xml/searchable"/>
8. </activity>
9. ...
10. </application>

中的

android:name 属性值必须为”android.app.searchable”,android:resource 属

性值必须引用上面提到的

res/xml/目录下的搜索配置文件(本例中的

res/xml/searchable.xml)。
请注意,只有配置了上面的

meta-data 节点的 Activity 的节点才能执行搜索,如果想在

整个应用程序中都可以调用搜索框,可以进行如下配置:

1. <application ... >
2. <activity android:name=".MySearchableActivity" >
3. <intent-filter>
4. <action android:name="android.intent.action.SEARCH" />