selectableItemBackground作为layer-list中的项目

时间:2015-02-10 13:17:45

标签: android android-xml android-drawable

我已经从Google IO计划应用来源(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,但它给了我相同的例外。 我似乎无法找到任何其他建议的解决方案。

如果有人知道造成这种情况的原因,请帮助我。

1 个答案:

答案 0 :(得分:20)

它起作用但是来自api v21 。因此,您可以继续在 Android Lollipop 和更新版本的设备上使用它。如果您需要支持较旧的系统版本,可以将此xml放入 drawable-v21 文件夹,并在具有相同名称的drawable文件夹中准备新的xml。 例如:

<强>抽拉/ 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