4

当用户单击内置搜索对话框中的应用程序图标时,是否有任何捕捉?请注意,我指的不是自定义对话框,而是 android 内置的搜索对话框。

4

2 回答 2

5

不,没有办法使SearchDialog的应用程序图标可点击。

但只是为了好玩,让我们假设存在一些可以完成工作的 hacky 解决方法。酷,我们已经得到了想要的行为......但现在我们有两个问题:

  1. 的行为SearchDialog与其他 Android 设备不一致。这会降低用户体验,因为用户希望搜索界面在所有 Android 设备上都一样。

  2. 您的应用现在使用内部 API,这些 API 在新 SDK 发布时可能保持一致,也可能不一致。如您所知,Android 团队可以将应用程序图标id从更改@+id/search_app_icon@+id/search_home_icon。您的 hack取决于内部 API……因此,此类更改将导致运行您的应用程序的较新设备崩溃(因为任何运行时搜索search_app_icon都会返回null)。

    此外,三星和 HTC 等公司在向公众发布新设备之前可以自由更改内部 API。下一个三星 Galaxy 可能会完全重新实现SearchDialog该类,更新其 UI/主题等……你永远无法确定。

所以基本上,你不能......而且你不应该尝试这样做。


只是因为我很无聊,这是导致我回答的源代码:

  1. 查看 的源代码SearchManager.java,并注意将SearchManager保留SearchDialog为私有实例变量mSearchDialog

  2. 查看 的源代码SearchDialog.java,并注意SearchDialog将应用程序图标引用为私有实例变量mAppIcon。另请注意,SearchDialog通过调用 来初始化变量findViewById,如此处所示

  3. 查看源代码search_bar.xml并注意默认情况下ImageView未设置为clickable。由于公共 SDK 中没有 ( 方法可以改变 this 的行为View,因此没有可靠的方法使其可点击。

于 2012-07-03T19:15:21.053 回答
0

我确信使用 Android 的公共 SDK 是不可能做到这一点的。

我认为唯一的解决方案是编写您自己的自定义对话框,但我担心使用内置对话框您无法做到这一点。

于 2012-07-04T11:51:32.200 回答