gpt4 book ai didi

android - ContextCompat.getColor() 忽略 NightMode

转载 作者:行者123 更新时间:2023-12-04 12:26:30 25 4
gpt4 key购买 nike

TL,博士;
ContextCompat.getColor()不使用夜间颜色(values-night/colors.xml),但在启用夜间模式时应该使用。

这是问题:

大家好,

所以我正在为我的 Android 应用程序实现一个深色主题,我称之为启用它:AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
我在 values/colors.xml 中设置了颜色在 values-night/colors.xml 中有深色版本.颜色根据 nightMode 变化很好,但是:

当我使用 ContextCompat.getColor(getApplicationContext(), R.id.myColor) ,它使用普通颜色( values/colors.xml )而不是夜间颜色( values-night/colors.xml )。

在我的 build.gradle ,我已经设置了这些:

implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.core:core-ktx:1.2.0-beta01'

有人可以告诉我我做错了什么吗?

PS:我已经看过下面的问题,它没有回答这个问题 https://stackoverflow.com/questions/57779661/contextcompat-getcolor-method-ignores-night-mode

最佳答案

我在夜间模式遇到了类似的问题。有些屏幕很好,但其他屏幕保持常规主题。最后,我发现我正在使用应用程序的上下文而不是当前的 Activity 上下文来实例化一些 View 。出于某种原因,应用程序的上下文不会跟踪此类信息。
因此,更新您的代码以使用当前的 Activity 上下文而不是应用程序上下文。
供其他用户引用。避免:

ContextCompat.getColor(getApplicationContext(), R.id.myColor)
并使用:
// In a Activity
ContextCompat.getColor(this, R.id.myColor)

// In a View
ContextCompat.getColor(getContext(), R.id.myColor)

// In a Fragment (check against null because getContext can trigger a NPE
Context context = getContext()
if (context != null) {
ContextCompat.getColor(context, R.id.myColor)
}

关于android - ContextCompat.getColor() 忽略 NightMode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58323212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com