我需要为Android应用制作两个主题。黑暗与光明的主题。而且我想使用自定义颜色,大小,字体...所以我想做类似的事情:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<!-- sizes, fonts... -->
</style>
<style name="AppTheme.Dark" parent="AppTheme">
</style>
<style name="AppTheme.Light" parent="AppTheme">
</style>
然后我要制作“黑暗与光明”主题以扩展AppTheme并仅更改颜色。
所以我需要一些教程,技巧或最有效的方法。 我感谢所有建议,谢谢。 :)
答案 0 :(得分:2)
我认为您进展顺利,您将为每个主题定义不同的样式,如下所示:
<style name="AppTheme.Dark" parent="AppTheme">
<item name="colorPrimary">/* color for dark theme */ </item>
<item name="android:windowBackground">/* color for dark theme */ </item>
// default font color for dark theme
// etc.
</style>
<style name="AppTheme.Light" parent="AppTheme">
<item name="colorPrimary">/* color for light theme */ </item>
<item name="android:windowBackground">/* color for light theme */ </item>
// default font color for light theme
// etc.
</style>
AppTheme
将定义“黑暗与黑暗”主题共有的样式。
此外,您还将在应用程序中设置一个可跟踪当前用户主题的设置。因此,让我们想象一下此设置保留在SharedPreferences中。然后,每次创建活动时,您都将检查当前设置并应用相应的主题:
@Override
protected void onCreate(Bundle savedInstanceState) {
boolean darkModeIsEnabled = // read the setting from SharedPreferences
if (darkModeIsEnabled) {
setTheme(R.style.AppTheme_Dark)
} else {
setTheme(R.style.AppTheme_Light)
}
super.onCreate(savedInstanceState)
setContentView(R.layout.my_activity)
}
最后一点,您可能希望用户从应用程序中切换主题,在这种情况下,您将需要重新创建一个或多个活动以应用新主题。
对于示例应用程序,您可以查看here。您可以检查themes.xml
文件以了解其完成情况。