Подтвердить что ты не робот

SelectableItemBackground как элемент в списке слоев

Я скопировал файл из источника приложения 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, но это дает мне то же исключение. Кажется, я не вижу других предлагаемых решений.

Если кто-нибудь знает, что вызывает это, пожалуйста, помогите мне.

4b9b3361

Ответ 1

Это работает, но из api v21. Итак, вы можете использовать его на устройствах с Android Lollipop и новее. Если вы хотите поддерживать более старые системные версии, вы можете поместить этот xml в папку drawable-v21 и подготовить новый xml в папке с одинаковым именем. Например:

вытяжка /selected _navdrawer_item_background.xml

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

Приложение Google IO делает то же самое: вот файл из выпадающей папки и вот файл из папки drawable-v21