2015-07-17 2 views
0

Я пытаюсь создать свой собственный стиль кнопки, следуя this instruction. Поэтому я создал две фигуры (фигуры). Один для прессованного стиля и один для нормального стиля. Оба просто откладывают цвет.Android: ImageButton с доступными ресурсами выбрасывает ResourceNotFoundException

Но когда я запускаю приложение, он выходит из строя с исключением (см. Ниже). Как-то он не может найти ресурс кнопки. Но почему?

Это рисуем форму (button_rounded_pressed.xml и button_rounded_normal.xml):

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle"> 
    <solid android:color="?attr/colorPrimary" /> 
    <padding android:left="7dp" 
      android:top="7dp" 
      android:right="7dp" 
      android:bottom="7dp" /> 
    <corners android:radius="8dp" /> 
</shape> 

Затем я создал button_rounded.xml селектор

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/button_rounded_pressed" 
      android:state_pressed="true" /> 
    <item android:drawable="@drawable/button_rounded_normal" /> 
</selector> 

И затем использовать этот стиль/рисуем/селектор на a ImageButton вот так:

<ImageButton 
      android:layout_width="150dp" 
      android:layout_height="150dp" 
      android:layout_centerHorizontal="true" 
      android:layout_centerVertical="true" 
      android:layout_alignParentTop="true" 
      android:src="@mipmap/ic_launcher" 
      android:background="@drawable/button_rounded" 
      /> 

Запуск приложения бросает следующее исключение при раздувании макета.

Вызванные: android.content.res.Resources $ NotFoundException: Файл Реза/рисуем/button_rounded.xml из растяжимых ресурсов ID # 0x7f02003b на android.content.res.Resources.loadDrawable (Resources.java: 1953) в android.content.res.TypedArray.getDrawable (TypedArray.java:601) в android.view.View (View.java:3328)

Примечание:. Вы можете получить доступ к своему коду via GitHub.

+0

Я загрузил ваш проект из Github. Он работает правильно. – Lamorak

+0

Я клонировал проект, и он все еще падает на моем Samsung Galaxy Nexus. – Matthias

ответ

1

Держу пари, что вы тестируете устройство до Lollipop. Вам необходимо удалить атрибут colorPrimary.

EDIT: Согласно сообщению this, ссылка на атрибуты темы в чертежах не поддерживалась до Lollipop.

+1

Правда, теперь это работает. Но в то же время это бесполезно, потому что я хотел бы использовать цвет, определенный в AppStyle. – Matthias

+1

@Matthias Это ошибка, присутствующая в устройствах pre-Lollipop. Атрибуты темы нельзя ссылаться на чертежи. Проверьте это https://code.google.com/p/android/issues/detail?id=26251. –

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

  • Нет связанных вопросов^_^