Использование ресурсов, на которые есть ссылки в текущей теме - PullRequest
2 голосов
/ 28 февраля 2012

Я снова пытаюсь использовать ресурсы, установленные в текущей теме, в моем приложении Android и сталкиваюсь с трудностями.

Следуя грубым рекомендациям, найденным здесь для повторного использования значения атрибута темы

Первоначально я пытался создать селектор, подобный этому

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

, где нарисованное нажатое состояние объявляется так:

<item name="selectableItemBackground">@android:drawable/item_background</item>

в текущих темах ICS xml doc themes xml doc .Это прекрасно компилируется в eclispse (тогда как если я произношу attr неправильно, это выдаст ошибку или reffng @android: drawable / item_background напрямую сообщит мне, что сам drawable является приватным).

Когда я запускаю приложение, я получаю

FATAL EXCEPTION: main
E / AndroidRuntime (18815): android.view.InflateException: Binary XML file line #14: Error inflating class <unknown>

без какой-либо другой полезной информации, кроме XML-файла, который использует этот селектор для значения атрибута ImageViews android:background.Я знаю, что есть ошибка, когда colorStateLists нельзя использовать в качестве фона , как упоминалось здесь , и, возможно, это также относится к спискам drawableState, ссылающимся на drawables из темы.Однако я знаю, что это работает, как описано в посте.

Я что-то здесь упускаю ??Я всегда сталкиваюсь с чем-то, чего не понимаю, когда пытаюсь делать подобные вещи, поэтому буду рад любым указателям.

Спасибо за любую помощь

РЕДАКТИРОВАТЬ

В качестве другого эксперимента я попытался установить псевдоним для ссылочной области рисования в теме, такой как

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="?android:attr/selectableItemBackground" ></bitmap>

, и напрямую использовать ее в качестве фона, но это тоже не работает.Глядя на псевдонимы, они служат только для ссылки на реальные изображения, поэтому имеет смысл

РЕДАКТИРОВАТЬ 2

еще один тест, который я обнаружил, используя его напрямую

android:background="?android:attr/selectableItemBackground"

действительно работает.Таким образом, кажется, что использование его внутри псевдонима или селектора может привести к несчастью.Как ни странно, я бы предположил, что и фон, и один и тот же аргумент

РЕДАКТИРОВАТЬ 3

Кажется, что атрибут attr, на который я указывал, на самом деле был селектором, который, я уверен,не помогли проблему!Думаю, я бы догадался, глядя на название этого

1 Ответ

1 голос
/ 28 февраля 2012

Полагаю, я сам ответил на вопрос в своих изменениях - главная проблема, которую я себе представлял, заключалась в том, что я пытался перефразировать селектор внутри селектора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...