当用户单击内置搜索对话框中的应用程序图标时,是否有任何捕捉?请注意,我指的不是自定义对话框,而是 android 内置的搜索对话框。
2 回答
不,没有办法使SearchDialog
的应用程序图标可点击。
但只是为了好玩,让我们假设存在一些可以完成工作的 hacky 解决方法。酷,我们已经得到了想要的行为......但现在我们有两个问题:
的行为
SearchDialog
与其他 Android 设备不一致。这会降低用户体验,因为用户希望搜索界面在所有 Android 设备上都一样。您的应用现在使用内部 API,这些 API 在新 SDK 发布时可能保持一致,也可能不一致。如您所知,Android 团队可以将应用程序图标
id
从更改@+id/search_app_icon
为@+id/search_home_icon
。您的 hack取决于内部 API……因此,此类更改将导致运行您的应用程序的较新设备崩溃(因为任何运行时搜索search_app_icon
都会返回null
)。此外,三星和 HTC 等公司在向公众发布新设备之前可以自由更改内部 API。下一个三星 Galaxy 可能会完全重新实现
SearchDialog
该类,更新其 UI/主题等……你永远无法确定。
所以基本上,你不能......而且你不应该尝试这样做。
只是因为我很无聊,这是导致我回答的源代码:
查看 的源代码
SearchManager.java
,并注意将SearchManager
保留SearchDialog
为私有实例变量mSearchDialog
。查看 的源代码
SearchDialog.java
,并注意SearchDialog
将应用程序图标引用为私有实例变量mAppIcon
。另请注意,SearchDialog
通过调用 来初始化变量findViewById
,如此处所示。查看源代码
search_bar.xml
并注意默认情况下ImageView
未设置为clickable
。由于公共 SDK 中没有 ( 方法可以改变 this 的行为View
,因此没有可靠的方法使其可点击。
我确信使用 Android 的公共 SDK 是不可能做到这一点的。
我认为唯一的解决方案是编写您自己的自定义对话框,但我担心使用内置对话框您无法做到这一点。