2015-02-10 2 views
21

Я скопировал файл из источника Расписание приложения Google IO (https://github.com/google/iosched), а именноselectableItemBackground в качестве элемента в послойного списке

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 

Line # 22 это один

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

Я не знаю, в чем проблема, я скопировал это снова из источника, не изменяя его. Он отлично работает в своем приложении.

Я попытался изменить ?android:selectableItemBackground на ?attr/selectableItemBackground, но это дает мне то же исключение. Кажется, я не вижу других предлагаемых решений.

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

+0

ли вы использовать библиотеку AppCompat? –

+0

Я не тестировал это больше, но, полагаю, это можно использовать в качестве обходного пути. http://stackoverflow.com/questions/26686250/material-effect-on-button-with-background-color – SnyersK

+0

Я тестировал его, и он работает как очарование в моем проекте. –

ответ

16

Это работает, но от 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 приложение делает то же самое: here is file from drawable folder и here is file from drawable-v21 folder

+0

Не знаю, почему этот ответ был отрицательным (я поднял его), так как это совершенно верно. Спасибо! – NightSkyDev

Смежные вопросы