2012-01-21 26 views
21

tôi cố gắng để thực hiện một tùy chỉnh Drawable bằng cách sử dụng thuộc tính nhưng tôi có một lỗi lạm phátSử dụng thuộc tính để thay đổi một yếu tố drawable màu

01-21 11:01:06.171: E/AndroidRuntime(13695): Caused by: android.content.res.Resources$NotFoundException: 
File res/drawable/action_bar_background.xml from drawable resource ID #0x7f020000 

action_bar_background.xml My

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle" > 
    <gradient 
     android:angle="90" 
     android:endColor="?attr/ActionBarEndColor" 
     android:startColor="?attr/ActionBarStartColor" 
    /> 
</shape> 

attr.xml My

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <attr name="ActionBarStartColor" format="reference|color" /> 
    <attr name="ActionBarEndColor" format="reference|color" /> 
</resources> 

Chủ đề của tôi.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="Theme.Theme1" parent="@style/Theme.GreenDroid.Light.NoTitleBar"> 
     <item name="ActionBarStartColor">@color/greyDark</item> 
     <item name="ActionBarEndColor">@color/greyLight</item> 
    </style> 

    <style name="Theme.Theme2" parent="@style/Theme.GreenDroid.Light.NoTitleBar"> 
     <item name="ActionBarStartColor">@color/myRed</item> 
     <item name="ActionBarEndColor">@color/myWhite</item> 
    </style> 
</resources> 

Tôi không hiểu tại sao, thuộc tính của tôi là tham chiếu hoặc màu, nếu tôi "buộc" màu trong themes.xml, nó cũng không hoạt động.

Ai đó có thể trợ giúp?

Tôi đã tìm thấy this question nhưng không giải quyết được sự cố của tôi.

+0

Giải pháp duy nhất Tôi đã tìm thấy, nó sử dụng nhiều tập tin drawable với màu choosen và làm cho các tài liệu tham khảo trong tập tin chủ đề. – Ahmet

+1

Sự cố này đã được giải quyết trong bản xem trước Android L, như được chỉ định tại đây: https://code.google.com/p/android/issues/detail?id=26251 –

+0

Tôi đã tìm thấy lỗi này trong Lollipop, nhưng vẫn không hoạt động với Kitkat và ít hơn –

Trả lời

12

Tin tốt cho mọi người! Bắt đầu từ Lollipop (21), bạn có thể sử dụng các thuộc tính để tham chiếu các nội dung như màu sắc, ví dụ: ?attr/colorPrimary.

Original câu trả lời:

Theo tôi biết bạn không thể tham khảo phong cách thuộc tính từ drawables, tôi không thể tìm thấy một cách sử dụng như thế về tài nguyên nền tảng Android ($ANDROID_HOME/platforms/android-*/data/res/), tất cả tôi thấy là mỗi drawable ngay cả đối với độ dốc drawables được xác định tại chỗ hoặc họ chỉ tham khảo các drawables khác như drawables màu.

Dưới đây là một báo cáo lỗi có liên quan cho việc này (sao nó):

https://code.google.com/p/android/issues/detail?id=26251

Bạn có thể workaround này bằng cách sử dụng drawables xml riêng biệt như giải thích tại địa chỉ:

https://stackoverflow.com/a/13471695/172670

+0

Thật không may nó sẽ vẫn sụp đổ trên bất cứ điều gì thấp hơn API 21. (Vì vậy, trên các thiết bị chạy KitKat hoặc thấp hơn nó sẽ vẫn sụp đổ.) –

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