Вопрос типа селектора XML - PullRequest
0 голосов
/ 16 января 2011

Привет, я новичок во всем, что касается типа xml. Я построил ROM под названием Sourcery для D1, и я хочу написать xml, на который я хочу указать из drawable.xml в папке значений в framework-res.apk, эта часть проста, у меня уже есть указал на xml, который я назвал newbackgrounds.xml и создал в папке значений.

Я хочу использовать его для фона, и моя идея состоит в том, чтобы иметь селектор, где он устанавливает изображение в качестве фона, но если изображение отсутствует, оно должно быть черным (#ffffffff). Изображение хранится в папке drawable в файле framework-res.apk и называется background_dark.jpg

Что-то вроде этого (опять же я новичок, так что извините за любые ошибки, это просто моя основная идея)

<?xml version="1.0" encoding="UTF-8"?>
<selector
  xmlns:android="http://schemas.android.com/apk/res/android">
    <item "@drawable/background_dark.jpg"="true" 
android:screen_background_dark="@drawable/background_dark.jpg" />
    <item "@drawable/background_dark.jpg"="false" 
android:screen_background_dark="#ffffffff" />
</selector>

Это, однако, не сработало, так что нужно внести изменения? Спасибо за любую помощь или альтернативы, это очень ценится

1 Ответ

1 голос
/ 17 января 2011

Ваш XML не является допустимым XML, это не то, для чего предназначены селекторы, и система ресурсов Android не работает таким образом. :)

Атрибуты XML объявлены как namespace:attributeName="value". Вы не можете использовать строку вместо имени атрибута.

Селекторы выбирают рисование на основе предопределенных состояний, таких как нажатие, фокусировка, фокусировка на окне, включение и т. Д. Они предназначены для выбора во время выполнения из набора элементов рисования, известных во время сборки. Вы пытаетесь использовать их, чтобы определить, существует ли ресурс, что не имеет смысла в системе ресурсов Android.

Идентификаторы ресурсов для рисования генерируются aapt из ресурсов, которые существуют в файловой системе в виде файлов изображений или XML. Если ресурс XML ссылается на "@drawable/background_dark" и его не существует, aapt не сможет полностью построить ваши ресурсы. Это так же, как если бы вы пытались прочитать переменную в Java, прежде чем объявить ее. Существующий файл является шагом декларации.

...