内置搜索对话框中的应用程序图标是否可以单击



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

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

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

  1. SearchDialog的行为与其他 Android 设备不一致。这降低了用户体验,因为用户希望搜索界面在所有 Android 设备上都以相同的方式工作。

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

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

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


只是因为我很无聊,以下是引导我回答的源代码:

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

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

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

我敢肯定,使用Android的公共SDK是不可能做到这一点的。

我认为唯一的解决方案是编写自己的自定义对话框,但恐怕使用内置对话框无法完成此操作。

最新更新