我正在使用CastVideos-android示例项目作为参考来创建一个启用投射的应用程序。
CastVideos-android 示例的 1.2 版使用ShowcaseView 库的这个分叉版本来显示一个非常漂亮的叠加层以突出显示投射按钮。
这很好,可以帮助开发人员满足 Cast Sender-App UI 要求,但是ShowcaseView 库的这个分叉版本不能很好地与可能在 ActionBar 中使用多个图标的应用程序配合使用。
例如,当将 SearchView 类型的项目添加到 ActionBar 时,ShowcaseView 会出错。
结果如下,复制此行为的步骤在屏幕截图下方:
复制步骤:
- 将 v7-appcompat 作为库项目包含在 CastVideo-android 项目中。
将 CastVideo-android 项目中的 res/menu/main.xml 更改为如下所示(将 SearchView 类型的 ActionView 添加到 ActionBar):
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:compat="http://schemas.android.com/apk/lib/res/android.support.v7.appcompat" > <item android:id="@+id/media_route_menu_item" android:title="@string/media_route_menu_title" app:actionProviderClass="android.support.v7.app.MediaRouteActionProvider" app:showAsAction="always"/> <item android:id="@+id/action_settings" android:title="@string/action_settings" app:showAsAction="never"/> <item android:id="@+id/search" android:icon="@drawable/abc_ic_search" app:title="@string/menu_Search" app:actionViewClass="android.support.v7.widget.SearchView" app:showAsAction="collapseActionView|ifRoom"/> </menu>
我正在使用最新版本的 v7-appcompat 库。
我怀疑罪魁祸首是 ActionBarViewWrapper.getMediaRouterButtonView() 方法(在com.github.amlcurran.showcaseview.targets中找到)如何通过反射找到 MediaRouterButton,但如果有多个,似乎无法理解如何找到 MediaRouterButton ActionBar 中的图标项目。
任何帮助将不胜感激!