Стилизация пользовательских видов - PullRequest
8 голосов
/ 18 марта 2011

У меня есть несколько пользовательских представлений в моем проекте Android, и я добавил соответствующие данные в файл attrs.xml. И теперь я могу реализовать свои объекты через XML. Это отлично работает.

Как мне оформить эти элементы? Когда я пытаюсь использовать свои пользовательские атрибуты в файле styles.xml, появляется сообщение об ошибке «Не найден ресурс, соответствующий указанному имени:»

Для использования пользовательских представлений в обычной разработке XML я использую xmlns: app = "http://schemas.android.com/apk/res/bla.bla.bla". Что является правильным для использования в стилях?

Вот так выглядит мой стиль в настоящее время

<style name="Journey_DaySelect_Sunday">
    <item name="app:onImage">@drawable/day_sunday_selected</item>
    <item name="app:offImage">@drawable/day_sunday</item>
</style>

Ответы [ 3 ]

18 голосов
/ 18 марта 2011

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

ИСПОЛЬЗУЙТЕ ИМЕННОЕ ПРОСТРАНСТВО, СОДЕРЖАЩЕЕ ВАШ R-ФАЙЛ

<style name="Journey_DaySelect_Sunday" parent="Journey_DaySelect">
    <item name="AppZappy.NIRailAndBus:onImage">@drawable/day_sunday_selected</item>
    <item name="AppZappy.NIRailAndBus:offImage">@drawable/day_sunday</item>
</style>
2 голосов
/ 03 января 2012

Для пояснения, атрибут имени элемента должен совпадать с тем, что содержится в объявленном-атрибутируемом атрибуте имени attrs.xml + ":" + имя атрибута.

Например:

attrs.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>  
    <declare-styleable name="com.chuck.norris">
        <attr name="actionBarTextColor" format="color"/>
    </declare-styleable> 
</resources>

style.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="myNewStyle">
        <item name="android:textColor">#FFFF0000</item>
        <item name="com.chuck.norris:actionBarTextColor">#ffff0000</item>
    </style>
</resources>

Затем вы можете применить этот стиль ко всем действиям, используя тему в файле manifest.xml.Везде, где существует пользовательское представление, которое хочет использовать атрибут «actionBarTextColor», вы можете затем использовать код Java:

TypedArray typedArray = context.obtainStyledAttributes(attrSet, R.styleable.com_chuck_norris);
COLOR_ACTION_BAR_TEXT = typedArray.getColor(R.styleable.com_chuck_norris_actionBarTextColor, 0xff0000ff);
typedArray.recycle();

Я не уверен, почему вы не можете просто определить свою схему в вашем style.xmlфайл, как было сказано выше, но, похоже, это ограничение style.xml.

0 голосов
/ 12 июля 2016

попробуйте это решение

<style name="Journey_DaySelect_Sunday">
<item name="onImage">@drawable/day_sunday_selected</item>
<item name="offImage">@drawable/day_sunday</item>
</style>

справка (китайский)

если вы, ребята, сочтете это полезным, я переведу это.

...