覆盖视图或视图层次结构的主题颜色*属性

时间:2014-10-30 08:00:21

标签: android android-appcompat material

有没有办法覆盖特定视图或视图层次结构的主题(活动样式)属性,例如colorControlActivated?

例如,如果我有

<item name="colorControlActivated">@color/my_activated_color<item>

在我的活动样式中,是否可以在另一个窗口小部件的样式中覆盖该值,例如工具栏?添加'colorControlActivated'项目似乎没有做任何事情

我目前的用例是我的应用栏工具栏中有一个SwitchCompat,我为每个小部件设置的全局colorControlActivated属性在工具栏的背景上看起来不太好。所以任何可以帮助我改变工具栏中每个视图的特定颜色的东西都会很棒。希望能在v21和v15 +上工作。

稍微不相关的说明,有人能指出我对SwitchCompat的源代码,我似乎无法在支持库的源代码中找到它。

1 个答案:

答案 0 :(得分:3)

这不能回答我的一般问题,但确实回答了我的用例场景,所以它也可能对其他人有用。

为了覆盖活动的colorAccent(或主题的任何其他属性),我必须专门为交换机创建一个ContextThemeWrapper,并在java中为交换机充气,以便我可以应用包装器。

代码基本上是这样的:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
ContextThemeWrapper wrapper = new ContextThemeWrapper(
        getSupportActionBar().getThemedContext(), R.style.CustomTheme);
View.inflate(wrapper, R.layout.toolbar_switch, toolbar);