以下是需要翻译的内容:
这里是情况:
- 我有一个名为
DogActivity
和FavoritesActivity
的应用。其中,DogActivity
是一个ListView
。当你在列表中点击一个Dog
后,它会带你进入FavoritesActivity
。 - 我想要准备一些主题,它们不需要动态生成。它们可以已经以 XML 形式存在。
- 根据用户从列表中选择的狗,我想要将
FavoritesActivity
显示为我预先存在的某个主题。
我听说过 ContextWrapper
,但我不确定如何应用它。你有什么想法吗?
细节:
这是通常的单一主题:
for 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
之前更改这些颜色,那么我的问题就解决了。