0

CastVideos-androidサンプル プロジェクトを参考 にキャスト対応アプリを作成しています。

CastVideos-android サンプルのバージョン 1.2 は、ShowcaseView ライブラリのこの分岐バージョンを使用して、非常に見栄えの良いオーバーレイを表示し、キャスト ボタンを強調表示します。

これは素晴らしいことであり、開発者が Cast Sender-App UI の要件を満たすのに役立ちますが、ShowcaseView ライブラリのこの分岐バージョンは、ActionBar で複数のアイコンを使用する可能性のあるアプリではうまく機能しません。

たとえば、SearchView タイプの項目を ActionBar に追加すると、ShowcaseView がバグアウトします。

結果は以下のとおりで、この動作を再現する手順はスクリーンショットの下にあります。

ここに画像の説明を入力

複製する手順:

  1. v7-appcompat をライブラリ プロジェクトとして CastVideo-android プロジェクトに含めます。
  2. 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 のアイコン項目。

どんな助けでも大歓迎です!

4

1 に答える 1