我在我的RecyclerView中添加了一个FastScroller并使用了“Bubble”-Drawable。
如果我在API 21上测试我的应用程序,它可以工作,但如果我在API 19上测试它,它会崩溃:
java.lang.RuntimeException:无法启动活动 ComponentInfo {at.guger.musixs / at.guger.musixs.ui.MainActivity}:
android.view.InflateException:二进制XML文件行#15:错误 inflating类at.guger.fastscroll.FastScroller ... 引起:android.view.InflateException:二进制XML文件行#15: 类inf.guger.fastscroll.FastScroller
时出错...由以下引起:java.lang.reflect.InvocationTargetException
...引起:android.view.InflateException:二进制XML文件行#6:错误膨胀类at.guger.fastscroll.FastScrollBubble
... 引起:java.lang.reflect.InvocationTargetException
... 引起:android.content.res.Resources $ NotFoundException:来自可绘制资源ID的文件res / drawable / bubble.xml#0x7f02004b
在android.content.res.Resources.loadDrawable(Resources.java:3457)
在android.content.res.TypedArray.getDrawable(TypedArray.java:602)
在android.view.View。(View.java:3767)
在android.view.ViewGroup。(ViewGroup.java:481)
在android.widget.FrameLayout。(FrameLayout.java:101)
在android.widget.FrameLayout。(FrameLayout.java:97)
at at.guger.fastscroll.FastScrollBubble。(FastScrollBubble.java:0)
... 38
我的泡泡-XML文件:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:topLeftRadius="@dimen/bubble_corner_radius"
android:topRightRadius="@dimen/bubble_corner_radius"
android:bottomLeftRadius="@dimen/bubble_corner_radius"
android:bottomRightRadius="0dp" />
<solid android:color="?attr/colorAccent" />
<size
android:height="@dimen/bubble_size"
android:width="@dimen/bubble_size" />
</shape>
我的FastScroll-Bubble-Layout:
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/fastscroll_bubble"
android:layout_width="64dp"
android:layout_height="64dp"
android:background="@drawable/bubble"
android:gravity="center"
android:textSize="36sp"
tools:text="A"
tools:visibility="visible" />
我的文件夹结构:
答案 0 :(得分:4)
您的问题是在您的drawable中使用?attr/
<solid android:color="?attr/colorAccent" />
仅支持Lollipop。因此,对于以下所有版本,您需要将颜色直接定义为颜色资源。
<solid android:color="@color/colorAccent" />
有关详细信息,请参阅How to reference style attributes from a drawable?。