我意识到自己在样式和主题方面可能做的根本上是错误的,但是我还是一个Android新手,所以请原谅我的无知。我正在尝试将MediaRouteButton的样式从默认的Dark更改为light,因为我的LightActionBar很浅。我的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:错误:错误:找不到与给定名称匹配的资源(在'actionButtonStyle'处,值为'@android:style/Theme.MediaRouter.Light')。

最佳答案

如果您不想更改图标的颜色,则框架会根据操作栏的主题选择合适的图标(深色或浅色),因此对于背景较浅的操作栏,它将选择较暗的图标,反之亦然;这是一个示例应用程序,具有两个不同的主题,分别是Theme.AppCompat.Light和Theme.AppCompat(其他都是相同的):



如您所见,将自动选择适当的一个。如果要根据品牌要求使用其他颜色,最简单的方法是将以下图像添加到项目中(通常的分辨率在mdpi,hdpi,..下):

  • mr_ic_media_route_disabled_holo_dark.png
  • mr_ic_media_route_off_holo_dark.png
  • mr_ic_media_route_on_0_holo_dark.png
  • mr_ic_media_route_on_1_holo_dark.png
  • mr_ic_media_route_on_2_holo_dark.png

  • (如果您使用的是轻型操作栏主题,请用“ light ”替换“ dark ”)。查看Google Cast > Sample Apps(“转换图标”部分)上的 Assets ,以了解这些图像是什么,并根据这些图像构建自己的图像。

    10-07 19:22
    查看更多