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

最佳答案

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

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

  • SearchDialog 的行为与其他 Android 设备不一致。这会降低用户体验,因为用户希望搜索界面在所有 Android 设备上都能正常工作。
  • 您的应用程序现在使用内部 API,当新 SDK 发布时,这些 API 可能保持一致,也可能不一致。众所周知,Android 团队可以将 app icon's id @+id/search_app_icon 更改为 @+id/search_home_icon 。您的 hack 取决于内部 API...所以这样的更改将导致运行您的应用程序的较新设备崩溃(因为任何运行时搜索 search_app_icon 都将返回 null )。

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

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

    只是因为我很无聊,这是让我得到答案的源代码:
  • 查看 SearchManager.java 的源代码,注意 SearchManagerSearchDialog 作为私有(private)实例变量 mSearchDialog 保留。
  • 查看 SearchDialog.java 的源代码,并注意 SearchDialog 将应用程序图标引用为私有(private)实例变量 mAppIcon 。还要注意 SearchDialog 通过调用 findViewById 初始化变量,如 here 所示。
  • 查看 search_bar.xml 的源代码,注意到 ImageView 默认没有设置为 clickable。由于公共(public) SDK 中没有 (方法可以改变此 View 的行为,因此没有可靠的方法使其可点击。
  • 关于java - 内置搜索对话框中的应用程序图标可以点击吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11218951/

    10-09 01:31