Ошибка пользовательского атрибута - Android Studio 1.2

В моем проекте Android у меня есть несколько пользовательских компонентов, которые используют настраиваемые атрибуты.

Файл attrs.xml выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<resources >
    <declare-styleable name = "TextBox">
        <attr name = "font" format = "string"/>
    </declare-styleable>

    <declare-styleable name = "ButtonBox">
        <attr name = "font" format = "string"/>
    </declare-styleable>
</resources>

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

Ошибка: атрибут/шрифт элемента найден более одного раза
Ошибка: не удалось выполнить задачу ':app:mergeDebugResources'.

Не должно иметь значения, что в двух разных ресурсах, которые можно объявлять, есть похожие имена атрибутов, верно?

Если у вас есть какая-либо помощь, мы будем очень признательны, спасибо!


person MikaylaRay44    schedule 04.05.2015    source источник
comment
Аналогично stackoverflow.com/questions/4434327/   -  person Suragch    schedule 18.02.2017


Ответы (1)


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

Проверьте также эту ссылку, это хороший пример.

Вот как это должно быть:

<?xml version="1.0" encoding="utf-8"?>
<resources >
    <declare-styleable name="Box">
        <attr name="font" format="string"/>
    </declare-styleable>
</resources>

Вы можете использовать Box в тексте, кнопке и т. д.

person George    schedule 04.05.2015
comment
О, да, я думаю, я мог бы заставить их использовать одно и то же, я не думал о том, чтобы объявлять-стилизируемое было каким-либо именем, кроме его ассоциации. Эти ссылки были очень полезны, спасибо. - person MikaylaRay44; 04.05.2015