Android Pie在“设置”->“显示”->“设备主题”菜单中添加了切换亮/暗主题的功能。
我希望我的应用根据设备设置中设置的“设备主题”应用正确的主题。
根据Styles and Themes Android指南,对于深色模式,应用程序应使用扩展了Theme.AppCompat
的主题,对于浅色模式,应用程序应使用扩展了Theme.AppCompat.Light
的主题。 / p>
所以我在应用程序中创建了两个主题:
<style name="AppTheme.Dark" parent="Theme.AppCompat">
...
</style>
<style name="AppTheme.Light" parent="Theme.AppCompat.Light">
...
</style>
但是在AndroidManifest.xml
中,当我使用<application>
标签声明应用程序时,我只能在android:theme
属性中指定一个主题:
<application
android:name=".MyApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher"
android:supportsRtl="true"
android:theme="@style/AppTheme.Light"
tools:replace="android:name">
如何根据设备设置中设置的设备主题在AndroidManifest.xml
中声明我的应用程序以动态选择@style/AppTheme.Light
或@style/AppTheme.Dark
?
答案 0 :(得分:0)
如果要更改现有活动的主题,请在setTheme()之后调用recreate()。
注意:如果在onCreate()中更改主题,请勿调用recreate,以避免无限循环。
wp-config
答案 1 :(得分:0)
您可能想尝试Theme.AppCompat.DayNight
而不是定义两个主题。在此视频Cost of a Pixel Color中的实现。
但是,当我在模拟器上进行测试时,切换设置->显示->设备主题菜单不起作用。我必须切换“开发人员选项”->“夜间模式”->“始终打开”并自动选择黑暗主题。
由于我没有Android Pie设备,因此不确定这是否是模拟器的错误。