【发布时间】:2016-09-06 19:38:37
【问题描述】:
所以情况如下:
- 我有
DogActivity和FavoritesActivity。DogActivity只是一个ListView。当您单击列表中的Dog时,它会将您带到FavoritesActivity。 - 我想准备好一些主题。它们不需要动态生成。它们可能已经以 XML 形式存在。
- 根据用户从列表中选择的狗,我希望在我现有的主题之一中显示
FavoritesActivity。
我听说过ContextWrapper,但我不知道如何应用它。有什么想法可以做到这一点吗?
详情:
这是通常的单一主题:
适用于 v21/styles.xml
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:colorControlHighlight">@color/colorAccentLight</item>
<item name="android:colorControlNormal">@color/colorAccent</item>
<item name="android:itemTextAppearance">@style/AppTheme.itemTextStyle</item>
<item name="popupMenuStyle">@style/PopupMenu.MyAppTheme</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:colorControlHighlight">@color/colorAccentLight</item>
</style>
<style name="AppTheme.itemTextStyle" parent="@android:style/TextAppearance.Widget.IconMenu.Item">
<item name="android:textColor">@color/colorPrimary</item>
</style>
</resources>
用于styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
我想做的事:
基本上我只是想即时更改colorPrimary、colorPrimaryDark 和colorAccent,并拥有使用它们来更改的所有样式和主题以及XML 布局。因此,如果我可以在启动 FavoritesActivity 之前更改这些颜色,那将解决我的问题。
【问题讨论】:
-
回复的人,我没有缺席。我在这里。我正在实施你的建议。我在
layout.xml文件中直接使用 colorPrimary 或 colorAccent 时遇到了一些问题。他们并没有一起改变。目前只有原色在变化,我的意思是 colorPrimary 和 colorPrimaryDark。到目前为止,除非我可以直接更改这些颜色的值,否则我很不走运。同时,向所有人 +1。
标签: android android-layout android-theme android-styles