У меня есть пользовательский класс Resources
, где можно установить цвет, который переопределит те, которые определены в res/values / colors. Каждое действие переопределяет метод getResources()
для возврата моего пользовательского ресурса-объекта. Если я получаю цвета программно (в java-вызове getResources().getColor(R.color.xxx)
) все работает так, как ожидалось. Проблема заключается в файле xml-layout. Если я определяю цвет там (например, используя textColor="@color/xxx"
), он всегда будет использовать тот, который находится в /res/values/colors.xml, а НЕ мои переопределенные. Есть ли способ изменить это поведение, что при раздувании из XML мой объект пользовательских ресурсов используется?переопределить `getResources()` из контекста для работы в xml
3
A
ответ
1
После того, как я не смог найти фактическую реализацию AttributeSet
, я понял, что вся идея была неправильной. Я предполагаю, что, поскольку ресурсы предварительно скомпилированы, они не получены таким же образом, используя класс Resources
. Решением является сама система сборки. Пчела библиотеки Ресурсы имеют более низкий приоритет, чем приложение, которое его использует. Поэтому приложение, использующее мою библиотеку, может как-то переопределить библиотечные ресурсы, указав собственные, используя одно и то же имя в свой color.xml.
Одним из способов может быть размещение пользовательских значений цвета внутри 'color.xml '. Затем вы можете получить к нему доступ из файла Java, а также для файла xml. –
Никто не может добавлять цвета в colors.xml на RUNTIME !!! –
Да Сэр. Согласен. Я думаю, вы меня неправильно поняли. Я просто предлагаю, чтобы вместо переопределения цветов по умолчанию, почему бы вам не добавить свои пользовательские цвета в XML-файл (НЕ во время выполнения) другим именем, а затем использовать его вместо этого. Я пытаюсь просто получить ваш случай использования и нуждаюсь в том же. –