2012-01-21 13 views
21

Staram się zwyczaj Drawable za pomocą atrybutu, ale mam błąd pompowaniaKorzystanie atrybut zmodyfikować rozciągliwej kolor element

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 

Moja action_bar_background.xml

<?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> 

Moja attr.xml

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

Moje motywy.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> 

Nie ukrywam, dlaczego mój atrybut jest odniesieniem lub kolorem, jeśli "wymuszam" kolor w themes.xml, to też nie działa.

Czy ktoś może pomóc?

Znalazłem this question, ale to nie rozwiązuje mojego problemu.

+0

jedynym rozwiązaniem Zauważyłem, że należy użyć wielu rysowanych plików z wybranym kolorem i utworzyć odniesienie w pliku motywu. – Ahmet

+1

Ten problem został rozwiązany w podglądzie Androida L, tak jak tutaj: https://code.google.com/p/android/issues/detail?id=26251 –

+0

Znalazłem to w Lollipop, ale nadal nie działa KitKat i mniej –

Odpowiedz

12

Dobra wiadomość dla wszystkich! Uruchamiając Lollipop (21) możesz użyć atrybutów do odniesienia rzeczy takich jak kolory, np. ?attr/colorPrimary.

Oryginalny odpowiedź:

O ile wiem, nie można odwołać styl atrybuty z kanału alfa, nie mogłem znaleźć wykorzystanie takiego w Android zasobów platformy ($ANDROID_HOME/platforms/android-*/data/res/), wszystko co widzę to, że każdy odkształcalny nawet do gradientu są zdefiniowane w miejscu lub po prostu odwołują się do innych rysunków, takich jak kolorowe rysunki.

Oto powiązany raport o błędzie do tego (Star IT):

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

to można obejść przy użyciu oddzielnych kanału alfa xml jak wyjaśniono na stronie:

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

+0

Niestety nadal będzie się zawieszał na czymkolwiek niższym niż API 21. (Więc na urządzeniach z KitKatem lub niżej nadal będzie się zawieszał.) –

Powiązane problemy