0

我正在开发一个具有多个主题的项目,每个主题都有不同的属性值。

我希望我的一些属性具有相同的值,我知道我可以这样实现。

<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 的值也是相同的。

谢谢

4

1 回答 1

0

我找到了一种解决方法,我使用枚举来指定在我的代码中应该将哪个属性值读取为 theme_previewboxcolor。但是,这不允许 theme_previewboxcolor 交替声明一个新值。

于 2016-09-23T12:45:23.410 回答