使用分叉 ShowcaseView 项目库的 CastVideo-Android 示例无法在 ActionBar 中使用多个图标

Posted

技术标签:

【中文标题】使用分叉 ShowcaseView 项目库的 CastVideo-Android 示例无法在 ActionBar 中使用多个图标【英文标题】:CastVideo-Android sample using forked ShowcaseView project library not working with multiple Icons in ActionBar 【发布时间】:2014-08-14 20:36:19 【问题描述】:

我正在使用CastVideos-android 示例项目作为参考创建一个支持转换的应用程序。

CastVideos-android 示例的 1.2 版使用 this forked version of the ShowcaseView library 显示一个非常漂亮的叠加层以突出显示投射按钮。

这很好,可以帮助开发人员满足 Cast Sender-App UI 要求,但 this forked version of the ShowcaseView library 不能很好地与可能在 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操作栏。

任何帮助将不胜感激!

【问题讨论】:

如果您删除搜索视图,它是否有效?我想确保它是由添加搜索视图引起的。另外,为了帮助缩小问题的范围,您能否在此处添加一个正常的操作项(不是视图)并查看它是否有效? 感谢您的快速回复,阿里。实际上,我能让它正常工作的唯一方法是,如果 Cast 图标是 ActionBar 中的 only 图标。如果我在那里放了一个额外的常规菜单项(非溢出,所以现在有 2 个图标),问题仍然存在。似乎问题不是特定于 ActionBar 中的 ActionView 类型的项目,而是当 ActionBar 中有多个图标而不是 Cast 图标时。 我做了那个叉子,所以我需要花点时间研究一下;顺便说一句,那个叉子现在已经合并到流中了。随意在分叉项目上打开一个错误,一旦有机会,我会看看;我关注的案例是 CastVideos 应用,它只有一个操作项。 我将在分叉项目中提交错误,并暂时研究另一种展示 Cast 图标的方式。如果我找到解决方案,我会在这里发布答案。谢谢! 请提交错误!下周去看看 【参考方案1】:

forked 项目已更新以处理这种情况。感谢您报告问题。一旦我从您(或其他任何人)那里得知它按预期工作,我将向 Alex 提交一个拉取请求。

【讨论】:

以上是关于使用分叉 ShowcaseView 项目库的 CastVideo-Android 示例无法在 ActionBar 中使用多个图标的主要内容,如果未能解决你的问题,请参考以下文章

flutter新手引导插件 showcaseview

如何在我自己的项目中使用分叉的 SBT 插件

如何在 Android Studio 中使用分叉的 git 项目

导入在 Next.JS 项目中分叉和编辑的包时出错

关于更新分叉

区块链中的软分叉与硬分叉详解