可选项背景作为图层列表中的项目

28

我已经从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,但它给我相同的异常。 我似乎找不到其他建议的解决方案。

如果有人知道是什么原因导致这个问题,请帮助我。


你使用Appcompat库吗? - Ioane Sharvadze
我没有再测试过,但我认为这可以用作解决方法。https://dev59.com/Bl8d5IYBdhLWcg3wkS0V - SnyersK
我已经测试过了,在我的项目中它运行得非常好。 - Ioane Sharvadze
1个回答

23

它能够正常工作,但要求使用api v21及其以上版本的设备。所以,你可以在运行Android Lollipop及更新版本的设备上使用它。如果你需要支持旧版本系统,可以将这个xml文件放在drawable-v21文件夹中,并准备一个新的具有相同名称的xml文件放在drawable文件夹中。

例如:

drawable/selected_navdrawer_item_background.xml

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

Google IO应用程序做了同样的事情: 这里是来自drawable文件夹的文件 以及 这里是来自drawable-v21文件夹的文件


不知道为什么这个回答被否定了(我已经点赞了),因为它是完全有效的。谢谢! - RickBoyerDev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接