依赖:'com.google.android.material:material:1.8.0'
今天开发安卓程序中,遇到的bug
使用ShapeableImageView,来定义一个圆形图片,
在我切换fragment到图片页面时出现错误,虽然不会导致应用退出,但是一堆报错,看着是很不舒服。
W/ResourcesCompat: Failed to inflate ColorStateList, leaving it to the framework
java.lang.UnsupportedOperationException: Failed to resolve attribute at index 0: TypedValue{t=0x2/d=0x7f0300f7 a=-1}
at android.content.res.TypedArray.getColor(TypedArray.java:529)
at android.content.res.XResources$XTypedArray.getColor(XResources.java:1294)
at androidx.core.content.res.ColorStateListInflaterCompat.inflate(ColorStateListInflaterCompat.java:160)
at androidx.core.content.res.ColorStateListInflaterCompat.createFromXmlInner(ColorStateListInflaterCompat.java:125)
at androidx.core.content.res.ColorStateListInflaterCompat.createFromXml(ColorStateListInflaterCompat.java:104)
at androidx.core.content.res.ResourcesCompat.inflateColorStateList(ResourcesCompat.java:262)
at androidx.core.content.res.ResourcesCompat.getColorStateList(ResourcesCompat.java:236)
at androidx.core.content.ContextCompat.getColorStateList(ContextCompat.java:558)
at androidx.appcompat.content.res.AppCompatResources.getColorStateList(AppCompatResources.java:48)
at com.google.android.material.resources.MaterialResources.getColorStateList(MaterialResources.java:65)
at com.google.android.material.imageview.ShapeableImageView.<init>(ShapeableImageView.java:114)
at com.google.android.material.imageview.ShapeableImageView.<init>(ShapeableImageView.java:92)
于是我去此依赖官网查询了一下文档,看到提示说,如果要使用这个依赖,那么app的主题,务必使用他们推荐的主题之一。
在文件AndroidManifest.xml
我使用的是android:theme="@style/Theme.AppCompat.Light.NoActionBar"
所以报错了,然后我改成了
android:theme="@style/Theme.MaterialComponents.DayNight.NoActionBar",我丢一下错误就消失了
以下是官网提供的样式
Theme.MaterialComponents
Theme.MaterialComponents.NoActionBar
Theme.MaterialComponents.Light
Theme.MaterialComponents.Light.NoActionBar
Theme.MaterialComponents.Light.DarkActionBar
Theme.MaterialComponents.DayNight
Theme.MaterialComponents.DayNight.NoActionBar
Theme.MaterialComponents.DayNight.DarkActionBar