【Android开发API】用户界面 - 搜索配置 - Searchable Configuration

  • 格式:pdf
  • 大小:415.79 KB
  • 文档页数:5

category: Search原文地址:/guide/topics/search/searchable-config.html翻译:futurexiong更新:2012.08.11为了在Android系统的协助下(把搜索查询传递到Activity中并提供搜索建议项)实现搜索,你的应用必须以⼀个XML文件的形式提供给系统⼀个搜索配置。

这⼀页将从搜索配置的语法以及使用上来描述它。

更多如何为你的应用实现搜索功能的信息,请从关于Creating a Search Interface的开发指南开始阅读。

文件路径: :res/xml/filename.xml :Android使用文件名作为资源ID。

语法:元素: : : ::定义所有Android系统用于提供辅助搜索的搜索配置。

::属性: ::android:label :::字符串资源。

(必须的。

)你应用的名称。

它应该跟你manifest文件中或者元素中android:includeInGlobalSearch为true的时候才对用户可见,在这种情况下,这个标签作为系统搜索设置中的⼀个可搜索项用来辨别你的应用。

::android:hint :::字符串资源。

(推荐的。

)当搜索框文本区域没有文本输⼊时显示的文本。

它提示用户什么内容是可搜索的。

为了跟其他Android应用保持⼀致性,你应该用"搜索 <内容-或者-产品>"这种格式来格式化android:hint的字符串。

比如,"搜索歌曲或者艺术家"或者"搜索YouTube"。

::android:searchMode :::关键字。

设置额外的模式来控制搜索的表现。

当前可用的模式定义了当自定义建议项获取到焦点时搜索文本该如何被改写。

以下的模式值是可接受的: {|style="border-spacing: 0px;margin: 0 4px 0 75px; width: 90%; border-left:1px solid #ccc;border-top:1px solid #ccc; "|-style="background:#DEE8F1; " ! style="border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px" | Value ! style="border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px" | Description|- style=" vertical-align:top;" | style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | "queryRewriteFromText" | style="border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | 使用SUGGEST_COLUMN_TEXT_1这⼀列的值来改写搜索文本。

|- style="vertical-align:top;" | style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px;" | "queryRewriteFromData" | style="border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px;" | 使用SUGGEST_COLUMN_INTENT_DATA这⼀列的值来改写搜索文本。

这应该仅用于当SUGGEST_COLUMN_INTENT_DATA里面的值对用户的检查和编辑是合适的,通常HTTP URI的就是这样。

|} :::详见Adding Custom Suggestions中改写搜索文本的相关讨论。

::android:searchButtonText :::字符串资源。

显示在搜索按钮上的文本。

按钮默认的展示⼀个搜索图标(放⼤镜),这对国际化来说是理想的,所以你不应当使用这个属性来改变按钮的图标,除非按钮执行的行为是搜索以外的东西(比如Web浏览器中的⼀个URI请求)。

::android:inputType :::关键字。

定义了使用的输⼊法的类型(比如软键盘的类型)。

对于⼤多数对期望输⼊的文本没有限制的搜索来说,你不需要用到这个属性。

在inputType里查看这个属性的合法值。

::android:imeOptions :::关键字。

为输⼊法提供额外的选项。

对于⼤多数对期望输⼊的文本没有限制的搜索来说,你不需要用到这个属性。

默认输⼊法的执行键值是"actionSearch"(在软键盘上提供⼀个"搜索"按钮来代替回车符)。

在imeOptions里查看这个属性的合法值。

::* 搜索建议项的属性* ::如果你定义了⼀个content provider来生成搜索建议项,你需要定义额外的属性来配置与content provider的通讯。

当提供搜索建议项的时候,你需要以下属性的⼀部分: : : ::android:searchSuggestAuthority :::字符串。

(提供搜索建议项必须的。

)这个值必须跟Android manifest中android:authorities属性提供的鉴权字符串⼀致。

::android:searchSuggestPath :::字符串。

这个路径被用作建议项查询Uri的⼀部分,位于Uri的前缀和authority之后,但在标准的建议项路径之前。

只有当你仅用⼀个content provider来处理不同类型的建议项(比如不同的数据类型)时会要用到这个属性,并且当你接收到这些建议项查询的时候你要有方式来区分它们。

::android:searchSuggestSelection :::字符串。

这个值将作为"query"#006600">selectionArgs参数中使用任意非空值来触发查询文本的传递(然后忽略selection参数)。

::android:searchSuggestIntentAction :::字符串。

当用户点击自定义搜索建议项时默认使用的intent action(比如"android.intent.action.VIEW")。

如果这个值没有被选中的建议项覆盖(通过SUGGEST_COLUMN_INTENT_ACTION这⼀列),当用户点击⼀个建议项的时候这个值将会被赋给Intent的action字段。

::android:searchSuggestIntentData :::字符串。

当用户点击自定义搜索建议项时默认使用的intent data。

如果这个值没有被选中的建议项覆盖(通过SUGGEST_COLUMN_INTENT_DATA这⼀列),当用户点击⼀个建议项的时候这个值将会被赋给Intent的data字段。

::android:searchSuggestThreshold :::整型。

触发建议项查询的最⼩字符数。

仅保证系统在输⼊字符数⼩于这个阀值的情况下不会查询你的content provider。

默认值是0。

::想要了解更多关于以上搜索建议项的属性,Adding Recent Query Suggestions和Adding Custom Suggestions的开发指南。

::* Quick Search Box属性* ::要让你的自定义搜索建议项对Quick Search Box可用,你需要以下属性的⼀部分: ::android:includeInGlobalSearch :::布尔值。

(对在Quick Search Box里提供搜索建议项来说是必须的。

)如果你想让你的建议项被包括在可全局访问的Quick Search Box里,把这个值设为"true"。

在你的建议项能在Quick Search Box里显示之前,用户仍然必须在Quick Search Box的设置里面启用你的应用作为⼀个可搜索项。

(译者注:就是说设置这个值为"true"的情况下用户还要在Quick Search Box的设置里面勾选上你的应用,这样才能在Quick Search Box里显示你的建议项。

)::android:searchSettingsDescription :::字符串。

为你提供给Quick Search Box的搜索建议项提供⼀个简要说明,它会显示在(Quick Search Box设置里面)你应用对应的可搜索项条目中。

你的描述应该扼要地描述出什么内容是可搜索的。

比如,用“艺术家,唱片,专辑”来描述音乐应用可搜索的内容,或者用“已保存的笔记”来描述记事本应用可搜索的内容。

::android:queryAfterZeroResults :::布尔值。

如果你希望对之前返回0个结果的搜索的超集仍然调用你的content provider,设置这个值为"true"。

比如你的content provider对"bo"返回0个结果,那么它会对"bob"重新进行查询。

如果这个设为"false",在这个单独的会话里超集将会被忽略("bob"不会调用⼀个新的查询)。

这仅在搜索对话框的生存期或者使用search widget的activity的生存期中持续(当搜索对话框或者activity重新打开的时候,"bo"将再次查询你的content provider)。

默认值是false。

::* 语音搜索属性* ::要启用语音搜索,你需要以下属性的⼀部分: ::android:voiceSearchMode :::关键字。

(对提供语音搜索功能来说是必要的属性。