0

我有一个问题,我的应用程序中有两个主题。深色主题和浅色主题

问题是如果我将应用主题设置为与系统主题不同,则应用主题无法正确加载。

Light 主题继承自:

<style name="Theme.Light" parent="Theme.MaterialComponents.Light.NoActionBar">

和黑暗主题继承自:

<style name="Theme.Dark" parent="Theme.MaterialComponents.NoActionBar">

例如,如果系统主题是浅色的,而应用程序主题使用继承自“Theme.MaterialComponents.NoActionBar”的深色主题,则主题将无法正确呈现,反之亦然。

我正在使用 values-night 目录,其中包含深色主题中使用的所有颜色。

4

1 回答 1

0

我通过将应用程序设置为根据应用程序主题切换主题模式来解决问题。

fun setTheme(){
        if(getThemeRes() == R.style.Theme_Dark){
            AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
        }
        else{
            AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
        }
    }

返回包含当前设置主题的 Integer 资源的函数。

fun getThemeRes() = packageManager.getPackageInfo(
        packageName,
        PackageManager.GET_META_DATA
    ).applicationInfo.theme
于 2020-04-20T14:03:16.507 回答