当用户单击内置搜索对话框中的应用程序图标时,是否有任何捕获?请注意,我不是指自定义对话框,而是 android 内置的搜索对话框。
不,没有办法使SearchDialog
的应用程序图标可点击。
但只是为了好玩,让我们假设存在一些可以完成工作的黑客解决方法。很酷,我们已经得到了所需的行为...但现在我们有两个问题:
-
SearchDialog
的行为与其他 Android 设备不一致。这降低了用户体验,因为用户希望搜索界面在所有 Android 设备上都以相同的方式工作。 -
你的应用现在使用内部 API,当发布新的 SDK 时,这些 API 可能会保持一致,也可能不会保持一致。据您所知,Android团队可以将应用程序图标的
id
从@+id/search_app_icon
更改为@+id/search_home_icon
。您的黑客取决于内部 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中的方法可以改变此View
的行为,因此没有可靠的方法使其可点击。
我敢肯定,使用Android的公共SDK是不可能做到这一点的。
我认为唯一的解决方案是编写自己的自定义对话框,但恐怕使用内置对话框无法完成此操作。