0
我想给用户切换我的整个应用程序的颜色皮肤的可能性。我的意思是当用户按下屏幕的按钮时,动态切换应用程序的一些自定义视图的样式。我知道,如果您在onCreate()
方法之前调用Activity.setTheme()
,则可以动态更改应用程序的主题,但在其xml布局上应用了自定义样式的普通视图(例如,NavigationView
)不具有setTheme或setStyle方法,因此它是似乎不可能动态地改变它们的样式。是否可以引用styles.xml文件中的属性?
我认为我的目标可能会引用在styles.xml
文件中声明的AppTheme中声明的颜色。我的意思是,我可以声明两个AppThemes,每个都有一组颜色,然后在为自定义视图声明的自定义样式中引用颜色。事情是这样的:
<resources>
<style name="AppTheme" parent="Theme.AppCompat">
<item name="customColor">#111111</item>
</style>
<style name="AppTheme.AnotherColor" parent="Theme.AppCompat">
<item name="customColor">#222222</item>
</style>
<style name="CustomActionBar">
<!-- title text color -->
<item name="android:textColorPrimary">@styles/customColor</item>
</style>
</resources>
所以,在默认情况下,自定义颜色上宣布我的“AppTheme”系统将默认使用颜色111111
应用。但是当我使用setTheme(R.styles.AppTheme_AnotherColor)
更改我的应用的主题时,应用的颜色将为222222
。如果这是可能的,那将是完美的!但这是不可能的,或者我不知道如何直接从同一个styles.xml
文件的另一种样式访问在样式中声明的颜色。我的意思是@styles/customColor
是不正确的,我不知道如何访问该颜色。
这是如何实现的?
自定义属性是使用'?attr/customAttributeName'引用的,因此在您的情况下,您需要将'?attr/customColor'放入您的'CustomActionBar'主题中。 – TR4Android
@ TR4Android找不到该属性。请测试它。您应该从另一个