【问题标题】:Setting ColorPrimary (Action Bar color) to transparent causes an exception将 ColorPrimary(操作栏颜色)设置为透明会导致异常
【发布时间】:2017-07-22 22:48:34
【问题描述】:

我正在尝试将我的操作栏颜色设置为透明,以便它与背景具有相同的颜色,并且还会与渐变背景融为一体。

我试着做这样的事情:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@android:color/transparent</item>
</style>

当我运行我的应用程序时,它会启动,加载屏幕一秒钟(全部正确渲染,操作栏是透明的),然后崩溃到以下异常:

java.lang.IllegalArgumentException: background can not be translucent: #0

没有跟踪到我的项目的相关类。 如果我将参数设置为纯色,一切正常。 你能帮我解决这个问题吗?我找不到任何解决方案。

谢谢。

【问题讨论】:

  • 你在使用MediaRouter吗?
  • 用于选角?是的。

标签: android android-layout android-actionbar android-styles android-actionbar-compat


【解决方案1】:

您的应用程序不会因为ActionBar 背景透明而崩溃,而是因为您的colorPrimary 是透明的,并结合使用MediaRouter 库。

MediaRouterThemeHelper.getControllerColorMediaRouterThemeHelper.getButtonTextColor 都调用ColorUtils.calculateContrast,这是您的IllegalArgumentException 的来源。

ColorUtils.calculateContrast 需要完全不透明的颜色才能正确计算对比度,仅基于 formula being usedMediaRouterThemeHelper 使用 colorPrimary 来确定如何为 MediaRouter 控制器和按钮文本颜色设置主题。

看起来您使用的是NoActionBar 样式,所以我假设您使用的是Toolbar 并将background 设置为您的colorPrimary。相反,您可以直接使用 @android:color/transparent 并将您的 colorPrimary 更改为不透明的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    相关资源
    最近更新 更多