2016-09-20 5 views
0

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

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

<style name="theme_plain" parent="AppBaseThemeLight"> 
    <item name="theme_backgroundtint">#FFF1F1F1</item> 
    <item name="theme_previewboxcolor">?theme_backgroundtint</item> 
</style> 

В моем коде я тогда получить это значение с

int boxcol = getIntFromAttr(R.attr.theme_previewboxcolor, themecolor); 

Если текущая тема, заявленная в приложение является темой в вопросе, этот метод работает отлично, а значение theme_previewboxcolor = theme_backgroundtint из та же тема.

Однако, когда текущая заданная тема является другой темой, theme_previewboxcolor принимает значение theme_backgroundtint для темы, которая в настоящее время установлена. Я понимаю, почему это так, поскольку текущее значение theme_backgroundtint соответствует значению текущей темы.

Мне нужен способ, чтобы theme_previewboxcolor соответствовать значению theme_backgroundtint, который был установлен в одной и той же теме, так что даже если текущий набор тема отличается, значение theme_previewboxcolor и значение theme_backgroundtint, как указано в тема такая же.

Благодаря

+0

есть что-то не так, просто используя ссылочный цвет: @ color/almost_white? – FunkTheMonk

+0

Дело в том, что у меня есть несколько разных подтем, поэтому в родительском я хочу, чтобы theme_previewboxcolor был theme_backgroundtint, так что они одинаковы, даже когда theme_backgroundtint затем переопределяется в подтеме, как вы можете делать с атрибутами, поэтому абсолютные ссылки цвета не будут работать – Luke

ответ

0

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