2015-02-10 15 views
21

tôi đã sao chép một tập tin từ các nguồn Schedule ứng dụng Google IO (https://github.com/google/iosched) cụ thể làselectableItemBackground như mục trong lớp-list

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> 

Tôi muốn sử dụng này để nổi bật mục hiện được chọn trong NavigationDrawer. Vấn đề của tôi là, khi tôi khởi chạy ứng dụng của mình, nó ném một ngoại lệ.

Đây là dòng quan trọng tôi nghĩ.

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 là này một

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

Tôi không biết vấn đề là gì, tôi sao chép này từ nguồn mà không điều chỉnh nó. Nó hoạt động tốt trong ứng dụng của họ.

Tôi đã cố gắng thay đổi ?android:selectableItemBackground thành ?attr/selectableItemBackground, nhưng nó cũng mang lại cho tôi ngoại lệ tương tự. Tôi dường như không tìm thấy bất kỳ giải pháp được đề xuất nào khác.

Nếu có ai biết điều gì gây ra điều này, hãy giúp tôi.

+0

Bạn có sử dụng thư viện Appcompat? –

+0

Tôi chưa thử nghiệm điều này nữa, nhưng tôi cho rằng điều này có thể được sử dụng như một giải pháp thay thế. http://stackoverflow.com/questions/26686250/material-effect-on-button-with-background-color – SnyersK

+0

Tôi đã thử nghiệm nó và nó hoạt động như một sự quyến rũ trong dự án của tôi. –

Trả lời

16

Nó hoạt động nhưng từ api v21. Vì vậy, bạn có thể tiếp tục và sử dụng nó trên các thiết bị có Android Lollipop và mới hơn. Nếu bạn muốn hỗ trợ các phiên bản hệ thống cũ hơn, bạn có thể đặt xml này vào thư mục drawable-v21 và chuẩn bị xml mới trong thư mục có thể vẽ có cùng tên. Ví dụ:

drawable/selected_navdrawer_item_background.xml

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

Google IO ứng dụng làm điều tương tự: here is file from drawable folderhere is file from drawable-v21 folder

+0

Không có ý tưởng tại sao câu trả lời này là âm (tôi upped nó), vì nó hoàn toàn hợp lệ. Cảm ơn bạn! – NightSkyDev

Các vấn đề liên quan