我正在尝试将操作栏颜色设置为透明,因此它将与背景颜色相同,并且还会与渐变背景混合。
我尝试过这样的事情:
<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
追踪我的项目的相关课程。 如果我将参数设置为纯色,一切正常。 你能帮我解决这个问题吗?我找不到任何解决方案。
感谢。
答案 0 :(得分:1)
由于ActionBar
背景透明,但由于colorPrimary
透明,并且使用MediaRouter
lib,您的应用不会崩溃。
MediaRouterThemeHelper.getControllerColor
和MediaRouterThemeHelper.getButtonTextColor
都会调用ColorUtils.calculateContrast
,这是IllegalArgumentException
来自的地方。
ColorUtils.calculateContrast
需要完全不透明的颜色才能正确计算对比度,只需基于formula being used和MediaRouterThemeHelper
使用colorPrimary
来确定如何主题{{1控制器和按钮文本颜色。
看起来您使用的是MediaRouter
样式,因此我假设您使用的是NoActionBar
而只是将Toolbar
设置为background
。相反,您可以直接使用colorPrimary
并将@android:color/transparent
更改为不透明的内容。