selectableItemBackground 作为图层列表中的项目

selectableItemBackground as item in layer-list

我从 Google IO Schedule 应用源 (https://github.com/google/iosched) 复制了一个文件,即

selected_navdrawer_item_background.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/backgroundColor">
        <shape>
            <solid android:color="#12000000" />
        </shape>
    </item>
    <item android:drawable="?android:selectableItemBackground"/>
</layer-list>

我想用它来突出显示 NavigationDrawer 中当前选定的项目。我的问题是,当我启动我的应用程序时,它会引发异常。

这是我认为重要的台词。

caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #22:
<item> tag requires a 'drawable' attribute or child tag defining a drawable

第 22 行就是这个

<item android:drawable="?android:selectableItemBackground"/>

我不知道是什么问题,我没有调整就直接从源码里复制过来了。它在他们的应用程序中运行良好。

我试图将 ?android:selectableItemBackground 更改为 ?attr/selectableItemBackground,但它给了我同样的异常。 我似乎找不到任何其他建议的解决方案。

如果有人知道是什么原因造成的,请帮助我。

它有效,但来自 api v21。因此,您可以继续在 Android Lollipop 及更高版本的设备上使用它。如果你想支持旧系统版本,你可以把这个 xml 放入 drawable-v21 文件夹,并在同名的 drawable 文件夹中准备新的 xml。 例如:

drawable/selected_navdrawer_item_background.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android">
     <solid android:color="#12000000" />
</shape> 

Google IO 应用做同样的事情: here is file from drawable folderhere is file from drawable-v21 folder