Android - определение цветов путем ссылки на другие определенные цвета
Я снова и снова задавался вопросом, есть ли способ определить цвета в colors.xml
, указав другой цвет, который был определен. Ну, я попробовал и действительно, кажется, что вы можете ссылаться на другие цвета, используя @color/XXX.
Например, один цвет .xml может выглядеть так:
<?xml version="1.0" encoding="utf-8"?>
<resources>
…
<color name="primary_blue">#205081</color>
<color name="action_bar_text">@color/primary_blue</color>
…
</resources>
Но я не хочу, чтобы другие использовали мое определение primary_blue
напрямую - не имеет смысла делать что-то синим без контекста. Лучшим решением, которое я придумал, является префикс "прямых" цветов, например primary_blue
, а затем комментарий, что они не должны использоваться напрямую.
Есть ли способ предотвратить использование этих прямых цветов, сохраняя при этом мой файл colors.xml ссылаться на них? Я думаю, что, возможно, стили, или апклиб может помочь мне.
Ответы
Ответ 1
Добавление ответа здесь в случае, если кто-то столкнется с этим в будущем.
При создании библиотеки Android вы можете отмечать ресурсы как общедоступные. Любой ресурс, который не находится в файле public.xml
, считается приватным.
Неявно создание атрибутов private не только препятствует пользователям вашей библиотеки испытывать предложения о завершении кода из внутренних ресурсов библиотеки, но также позволяет вам переименовывать или удалять личные ресурсы, не разбирая клиентов вашей библиотеки. Частные ресурсы отфильтровываются из завершения кода и редактора темы, а Lint предупреждает вас, когда вы пытаетесь ссылаться на частный ресурс.