【问题标题】:How to add a drop down next to the search input field in Android?如何在 Android 中的搜索输入字段旁边添加下拉菜单?
【发布时间】:2011-07-27 00:24:51
【问题描述】:

在我的 HTC Desire (Froyo) 上的系统范围搜索中,我看到搜索输入字段左侧有一个小下拉菜单,允许选择我想要搜索的位置(所有、网络、应用程序)。

如何在我的应用程序中实现此功能? Google 开发者网站上的搜索教程没有解决这个问题。

因此,在以下场景中,取自 Android 文档,

我想点击书籍,然后获得某种菜单,例如选择“单词”、“标题”作为搜索模式。

更新:我不是在寻找 QuickAction 对话框本身,而是在寻找如何将一些东西附加到对触摸做出反应的书籍图标上,以便我可以附加 QuickAction 或新活动或 . ..我想使用http://developer.android.com/guide/topics/search/search-dialog.html中描述的标准Android搜索对话框

【问题讨论】:

    标签: android search


    【解决方案1】:

    您不能修改系统的搜索对话框。因此,如果您希望在用户触摸图标时出现下拉菜单等自定义设置,您必须实现自己的对话框。这会使您的搜索不标准,所以我不建议这样做。

    但是,如果我不能说服你,你可以在这里看到 Android 的内置搜索对话框是如何实现的:

    在 Android 3.x 中,通过引入 SearchView 类,这变得更容易了。

    【讨论】:

      【解决方案2】:

      这些选项(及其图标)由 android 设置中的可搜索项目列表确定(设置->搜索->至少在我的手机中的可搜索项目)。如果您想向该菜单添加搜索操作,请查看以下内容:

      http://developer.android.com/guide/topics/search/adding-custom-suggestions.html#QSB

      在设备上启用建议

      当您的应用程序配置为 在快速搜索中提供建议 框,它实际上并没有启用 在快速搜索中提供建议 框,默认情况下。它是用户的 选择是否包含建议 从您的应用程序中的快速 搜索框。启用搜索 来自您的应用程序的建议, 用户必须打开“可搜索项目”(在 设置 > 搜索)并启用您的 应用程序作为可搜索项目。

      每个可用的应用程序 快速搜索框在 可搜索项目设置页面。这 条目包括名称 应用和简短描述 可以从哪些内容中搜索到 申请并提供给 快速搜索框中的建议。到 定义您的描述文本 可搜索的应用程序,添加 安卓:搜索设置说明 归因于您的可搜索 配置。例如:

      http://developer.android.com/guide/topics/search/searchable-config.html

      快速搜索框属性

      制作您的自定义搜索建议 可用于快速搜索框,您 需要以下一些 属性:

      android:includeInGlobalSearch 布尔值。 (需要在快速搜索中提供搜索建议 框。)设置为“真”如果你想要你的 建议纳入 全球可访问的快速搜索框。 用户仍必须启用您的 应用程序作为可搜索项目 之前的系统搜索设置 建议将出现在快速 搜索框。 安卓:搜索设置说明 细绳。提供搜索建议的简要说明 您提供给快速搜索框, 显示在可搜索的 您的应用程序的项目条目。您的 描述应该简明扼要地描述 可搜索的内容。为了 例如,“艺术家、专辑和曲目” 对于音乐应用程序,或“已保存 笔记”用于记事本应用程序。 android:queryAfterZeroResults 布尔值。如果您希望调用您的内容提供者,请设置为“true” 对于具有 过去返回零结果。为了 例如,如果您的内容提供商 为“bo”返回零结果,它 应该要求“鲍勃”。如果设置 为“假”,超集被忽略 单个会话(“鲍勃”不 调用重新查询)。这仅持续 搜索对话框的生命周期或 使用时活动的生命周期 搜索小部件(当搜索对话框 或活动重新打开,“bo”查询 再次访问您的内容提供商)。这 默认值为 false。

      因此,如果您想添加一个选项来搜索单词或标题,并且您有一个允许该搜索的活动,那么您可以将该可搜索项目添加到列表中。不过,它们只有在用户需要时才可用。

      【讨论】:

      • +1 当我了解到这个全局“包含在搜索中”的东西时。但正如我写的那样,我希望在我的应用程序中使用它,我可以使用下拉菜单选择我要搜索的类别。
      • 好的,我误解了“在应用程序中”部分。因此,您不需要全局搜索选项,而只需要在您的应用程序内部。我试图找到 SearchView 类的源代码,但 [platform/frameworks/base.git]/core/java/android/widget/ (或我正在寻找的任何其他地方)中缺少它
      • @Heiko 我发现这可能有助于遵循并模仿实现:grepcode.com/file/repository.grepcode.com/java/ext/… 编辑:Ed 已经找到它:/
      【解决方案3】:

      我认为您正在寻找的内容称为“快速操作对话框”。

      这里是a tutorial,您应该可以顺利进行。

      已由提问者更新(评论粘贴):

      啊,我明白了。不知何故,您需要图标的 id 才能实现 onclicklistener()。您可能会被困住只是使用搜索小部件并从头开始实施。或者,在实现并运行搜索对话框后,使用 hierarchyviewer 查看图标是否有 id。也许你会很幸运,它会有一个独特的。我暂时没有想法。

      【讨论】:

      • 我问的不是 Quickaction 本身,而是如何将它附加到搜索栏
      • 好吧,只需在视图上放置一个 onclicklistener()(就像 tut 一样)。在上面的示例图片中,我想您会给书籍的 imageview 一个 onclicklistener()。
      • 啊,我明白了。不知何故,您需要图标的 id 才能实现 onclicklistener()。您可能会被困住只是使用搜索小部件并从头开始实施。或者,在实现并运行搜索对话框后,使用 hierarchyviewer 查看图标是否有 id。也许你会很幸运,它会有一个独特的。我暂时没有想法。
      • Hierarchyviewer 在这里是一个非常好的主意。该图像的 id 确实为 id/search_app_icon
      【解决方案4】:

      它只是一个自定义视图,当您使用精美的动画点击该按钮时会呈现该视图。

      它与搜索框架本身无关。您只需显示一个自定义布局(如果需要,可以使用精美的动画)并通过单击其中一个图标来设置一个值。就是这样。

      【讨论】:

      • 关于如何在“正常”搜索框架中实现它的任何提示?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-21
      • 2015-07-28
      • 2015-01-10
      • 2013-04-24
      • 2018-11-24
      • 1970-01-01
      相关资源
      最近更新 更多