设置 ChromeCast MediaRoute 按钮的样式

2023-12-21

我似乎无法让 MediaRoute 按钮在我的实体 ActionBar 中显示为“白色”。

我的问题是:如何在不更改可绘制名称的情况下将 MediaRoute 按钮设置为浅色或深色?

在这里查看类似的问题:如何更改 ActionBar 中 MediaRouteButton 的样式? https://stackoverflow.com/questions/19278319/how-do-i-change-the-style-of-the-mediaroutebutton-in-the-actionbar可接受的解决方案只是使用您自己的 MediaRoute 可绘制集,并交换名称 lightdark。

对于我的应用程序,我有 3 种不同的样式:light-ActionBar、dark-ActionBar 和 light Solid-ActionBar。我不能简单地交换可绘制名称,因为我需要黑暗和光明才能正确显示前两个主题。为了正确显示实体操作栏内容,我正在做这样的事情:(以下示例在这里找到:http://www.jayway.com/2014/06/02/android-theming-the-actionbar/ http://www.jayway.com/2014/06/02/android-theming-the-actionbar/)

//Parent Light.DarkActionBar should give white ActionBar icons
<style name="AppTheme.Solid.Light" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/Widget.Solid.ActionBar</item>
    <item name="android:actionBarWidgetTheme">@style/ActionBarWidget</item>
    .
    .

//Make the ActionBar solid, but need to use 'inverse' to keep the icons/text white
<style name="Widget.Solid.ActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
.
.

//**** THE ISSUE IS CAUSED BY USING THE FOLLOWING
//Make the ActionBar dropdown spinner items use the correct (white) theme as well
<style name="ActionBarWidget" parent="Theme.AppCompat.Light.DarkActionBar">
.
.

ActionBarWidget 主题对于确保 ActionBar 溢出图标下拉菜单背景显示为白色而不是黑色是必要的。但是,它会导致 MediaRoute 按钮更改为深色主题可绘制对象,这是不合适的。

我尝试过覆盖Widget.MediaRouter.MediaRouteButton并强迫<item name="externalRouteEnabledDrawable">@drawable/mr_ic_media_route_holo_dark</item>,但我所做的一切都没有改变。

我们如何在不更改可绘制名称的情况下将 MediaRoute 按钮设置为浅色或深色? 是否有一个简单的样式可以覆盖我们可以设置自己的 MediaRoute 可绘制对象的位置?


请尝试以下操作:

菜单.xml:

<item
    android:id="@+id/media_route_menu_item"
    android:title="@string/media_route_menu_title"
    app:actionProviderClass="android.support.v7.app.MediaRouteActionProvider"
    app:actionViewClass="com.???.MediaRouteButtonHoloDark"
    app:showAsAction="always" />

MediaRouteButtonHoloDark:

public class MediaRouteButtonHoloDark extends MediaRouteButton {

    public MediaRouteButtonHoloDark( Context context ) {
        this( context, null );
    }

    public MediaRouteButtonHoloDark( Context context, AttributeSet attrs ) {
        this( context, attrs, android.support.v7.mediarouter.R.attr.mediaRouteButtonStyle ); 
    }

    public MediaRouteButtonHoloDark( Context context, AttributeSet attrs, int defStyleAttr ) {
        super( getThemedContext(context), attrs, defStyleAttr);     
    }

    private static Context getThemedContext( Context context ) {
        context = new ContextThemeWrapper( context, android.support.v7.appcompat.R.style.Theme_AppCompat );
        return new ContextThemeWrapper( context,  android.support.v7.mediarouter.R.style.Theme_MediaRouter );

    }   
}

在你的代码中的某个地方:

...
MenuItem mediaRouteMenuItem = menu.findItem( R.id.media_route_menu_item );      
MediaRouteButton mediaRouteButton = (MediaRouteButton) MenuItemCompat.getActionView( mediaRouteMenuItem ); 
mediaRouteButton.setRouteSelector( mMediaRouteSelector );
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设置 ChromeCast MediaRoute 按钮的样式 的相关文章

随机推荐

  • 在react-native中打开另一个屏幕

    我在本机反应中有这个屏幕 import React Component from react import AppRegistry TouchableOpacity Text Button Image TextInput PropTypes
  • 如何访问 Oak/Deno 中的表单主体

    我用的是橡木 德诺 我有一个从提供的 ejs 文件提交的表单 如何访问表单主体 当我将其记录到控制台时 它会打印 type form value URLSearchParamsImpl 帖子处理程序如下所示 router post add
  • 能够使用函数指针调用外部类的私有方法

    基于以下answer https stackoverflow com questions 27536395 passing pointer to member func of outer class template to nested c
  • 数据类型 date 和 datetime 在 add 运算符中不兼容

    我最近在 SQL Server 2008 开发环境中创建了一个连接日期和时间的函数 如下所示 select cast 2016 11 09 15 35 00 AS DATE CAST 00 00 00 AS DATETIME 在 SQL S
  • Emacs:选择一个区域并键入以删除该区域

    如何告诉 emacs 以与 Windows 或 Mac 相同的方式工作 如果我选择一个区域并开始键入 该区域将在插入新文本之前被删除 我不认为它是开箱即用的 看起来你必须按照以下方式打开删除选择模式EmacsWiki 上的这篇文章 http
  • 如何使用jhipster创建实体后删除它?

    我使用 yo jhipster entity 命令创建了 3 个实体 作者 书籍 图书馆 但在一个实体 图书馆 中 我有一个多对多关系 与书籍 但这导致 mappedBy 引用未知的目标实体属性 com com tst testdomain
  • 如何编写包含其他标记帮助程序的自定义 ASP.NET 5 标记帮助程序

    我一直在谷歌上查看 taghelpers 的示例 但找不到我正在寻找的任何示例 我有以下代码 div class form group div
  • Servlet:HttpServletRequest 中的 setAttribute 与 HttpSession 中的 setAttribute

    方法有什么区别setAttribute of HttpServletRequest类和setAttribute of HttpSession班级 它们在什么情况下使用 一个在请求范围内设置属性 另一个在会话范围内设置属性 主要区别在于示波器
  • 基于argparse的调用函数

    我是 python 新手 目前正在使用它 我有一个脚本可以对设备进行一些 API 调用 我想扩展功能并根据调用脚本时给出的参数调用不同的函数 目前我有以下内容 parser argparse ArgumentParser parser ad
  • 如何在 Windows 2012R2 上为 IIS 网站制作 SHA2 CSR 文件?

    我需要网站的 SSL 证书 但 CA 不接受我的 CSR 并告诉我 这是 SHA1 算法 您应该发送基于 SHA2 的 CSR 文件 如何在 Windows 2012R2 上为 IIS 网站创建 SHA2 CSR 文件 None
  • MVC Razor 部分视图中 webGrid.GetHtml 的分页

    我的页面上有两个选项卡 对于第一个选项卡 我在页面加载时加载网格 第二次 点击时 我正在使用Ajax ActionLink使用部分视图加载网格 我在用webGrid GetHtml 在两个选项卡中呈现具有默认分页的网格 第一个选项卡的分页工
  • 使用 OmniAuth 在 Factory Girl 中创建用户?

    我当前正在创建一个使用 OmniAuth 来创建和验证用户的应用程序 我在测试过程中遇到问题 因为 Factory Girl 无法在没有 OmniAuth 的情况下生成用户 我有几种不同的方法让工厂女孩使用omniauth 创建用户 但都没
  • 如何动画matplotlib的drawgreatcircle函数?

    我创建了一个小程序 以 NHL 城市为对象 然后绘制球队在整个赛季中走过的路径 生成的图形很混乱 所以我想到 如果我对飞行路径进行动画处理 会很有趣 就像观看印第安纳琼斯电影一样 线条从一个点延伸到另一个点 通过查看其他 matplotli
  • firebug - 隐藏特定 .css 文件中的样式

    有什么方法可以隐藏 firebug 样式面板中特定样式表的样式吗 例如我使用 CSS 重置并包含reset css在我的页面中 但当它在样式窗口中显示无用信息时 它看起来不太好 谢谢 我知道您在询问如何使用 FireBug 禁用样式表 你两
  • 如何减少这么长的 if 语句列表?

    所以这里我有一长串 if 语句 应该检测int anArray 是在一定范围内的 anArray new int 15 的价值观int anArray 从 开始anArray 0 是 49 50 51 59 0 5 9 10 15 19 5
  • VS Code 光标跳到底部

    为什么我创建新标签时光标会跳到最后一行代码 例如 当我在 HTML 中输入注释时 只要输入 它就会跳到底部 我必须更改什么设置才能防止这种情况发生 这很烦人 我刚刚开始使用 VS Code 如果这是一个非常简单的修复 那么我很抱歉 我有类似
  • Angular 中 .next() 函数的解释

    import Component Input Output EventEmitter from angular core var colorPickerCss app css ui color picker css var colorPic
  • linux bash 中的 $RANDOM 在启动时将始终相同

    我遇到了这个问题 我很困惑 我在 bash 中使用 RANDOM 作为 Linux 启动过程一开始的测试字符串 非常有趣的是 我观察到每次 linux 启动时 RANDOM 都是相同的 就我而言 它是 18869 我只是将 RANDOM 回
  • 查找字符串是否仅包含重复字符的正则表达式是什么?

    我已经经历过 正则表达式使用 Java 模式匹配字符串中的四个重复字母 https stackoverflow com questions 2622776 regex to match 4 repeated letters in strin
  • 设置 ChromeCast MediaRoute 按钮的样式

    我似乎无法让 MediaRoute 按钮在我的实体 ActionBar 中显示为 白色 我的问题是 如何在不更改可绘制名称的情况下将 MediaRoute 按钮设置为浅色或深色 在这里查看类似的问题 如何更改 ActionBar 中 Med