13

スタイルとテーマに関して何か根本的な間違いをしている可能性があることは認識していますが、まだ Android 初心者なので、無知であることをお許しください。明るい ActionBar があるため、MediaRouteButton のスタイルをデフォルトの暗い色から明るい色に変更しようとしています。私の MediaRouteButton は、次のように ActionBar に実装されています。

<item
    android:id="@+id/menu_item_cast"
    android:actionProviderClass="android.support.v7.app.MediaRouteActionProvider"
    android:actionViewClass="android.support.v7.app.MediaRouteButton"
    android:showAsAction="always"
    android:actionButtonStyle="@android:style/Theme.MediaRouter.Light"/>

ただし、これにより次のことがわかります。

android/res/menu/main.xml:24: エラー: エラー: 指定された名前に一致するリソースが見つかりません (値 '@android:style/Theme.MediaRouter.Light' の 'actionButtonStyle' で)。

4

6 に答える 6

1

使用するアイコン (スタイルだけでなく) を変更する場合は、ここで名前を付けたのとまったく同じ方法で名前を付ける必要があります。たとえば、明るいテーマの場合、解像度ごとに 、 、 、 、 という名前のアイコンic_cast_on_light.pngic_cast_on_0_light.pngセットic_cast_on_1_light.pngic_cast_on_2_light.png必要ic_cast_disabled_light.pngですic_cast_off_light.png

于 2016-02-12T15:48:16.513 に答える
1

MediaRouteButton の色をコードで変更する方法を見つけました。これは簡単に実行でき、既存のコードに触れる必要はありません。

MediaRouteButton は、渡されたコンテキストのテーマに従ってスタイルを設定します。ContextThemeWrapper を作成してコンテキストをラップし、それを MediaRouteActionProvider に渡すことができます。

次に例を示します。

    MenuItem item = menu.add(Menu.NONE, R.id.menu_cast, Menu.NONE, "Cast");
    MenuItemCompat.setActionProvider(item, new MediaRouteActionProvider(new ContextThemeWrapper(this, R.style.AppTheme)));
    item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);

ここで、R.style.AppTheme は Theme.AppCompat から拡張されたテーマです。これは暗いテーマであるため、キャスト ボタンは常に明るいバージョンで表示されます。ライト テーマを渡して、キャスト ボタンをダーク バージョンで動作させることもできます。また、動的に変更することもできます。オプション メニューを無効にするだけで、新しいテーマを使用してアクション プロバイダーを再作成する必要があります。

サポート ライブラリ 23.1.1 を使用していますが、このような問題は見つかりませんでした。

于 2015-11-28T13:55:49.967 に答える
0

AndroidManifest.xml などでスタイルをアクティビティに適用することで、スタイルを変更できるはずです。ドローアブルを変更したい場合は、プロジェクトに mr_ic_media_route_holo_light ドローアブルを追加することで成功しました。drawables フォルダーに追加して、必要に応じてカスタマイズするだけです。例: https://github.com/android/platform_frameworks_support/blob/master/v7/mediarouter/res/drawable/mr_ic_media_route_holo_light.xml

于 2014-08-22T08:41:55.467 に答える