Drawable无法使用API​​ 19

时间:2016-05-14 20:37:17

标签: java android xml android-layout

我在我的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" />

我的文件夹结构:

1 个答案:

答案 0 :(得分:4)

您的问题是在您的drawable中使用?attr/

<solid android:color="?attr/colorAccent" />

仅支持Lollipop。因此,对于以下所有版本,您需要将颜色直接定义为颜色资源。

<solid android:color="@color/colorAccent" />

有关详细信息,请参阅How to reference style attributes from a drawable?