Я сделал простой пользовательский вид - "ColorSwatch". Он круговой, показывает назначенный цвет, и если этот цвет имеет прозрачность, цвет рисуется поверх шаблона проверки. Вид отлично работает.
Моя проблема в том, что когда я определяю пользовательские атрибуты для swatch (в values/attrs_color_swatch_view.xml
), я не могу указать атрибут с именем "color". Компилятор жалуется, что цвет уже определен и указывает на мой файл colors.xml. В качестве обходного пути я назвал параметр swatchColor
, но я предпочел бы просто быть color
.
Файл: values/attrs_color_swatch_view.xml
<resources>
<declare-styleable name="ColorSwatchView">
<attr name="swatchColor" format="color"/><!-- would prefer to simply be 'color', not 'swatchColor' -->
<attr name="selectionThickness" format="dimension"/>
<attr name="isSelected" format="boolean"/>
<attr name="selectionColor" format="color"/>
<attr name="alphaCheckerSize" format="dimension" />
</declare-styleable>
</resources>
Можно ли использовать имя атрибута color
? Или это зарезервированное ключевое слово? Можно ли каким-либо образом пропустить пространство имен для моего представления?
Вы не можете использовать color
по той же причине, которую не можете использовать background
. Они уже определены в пространстве имен android.
Итак, как использовать color
или любое другое имя атрибута, которое зарезервировано? Используя те, которые уже определены, а не создают новые.
Вместо:
<attr name="swatchColor" format="color"/>
используйте это:
<attr name="android:color"/>
Всегда следите за тем, чтобы вы использовали те, которые были установлены андроидом. Только если вы считаете, что это не соответствует вашим потребностям, продолжайте и создайте свой собственный атрибут.