我正在为我的 Android 应用程序开发夜间模式。我正在使用 ContextCompat.getColor 以编程方式获取某些 UI 元素的颜色,但是这种方法没有获取正确的颜色。当应用程序处于夜间模式时,为了遵守夜间资源限定符,ContextCompat 从 values/colors.xml 中获取颜色,而不是从 values-night/colors.xml 中获取颜色。
奇怪的是,如果我从 Activity 调用 ContextCompat.getColor,它会返回正确的颜色
//get Actual Theme Colors
String bgColor = String.format("#%06X", (0xFFFFFF & ContextCompat.getColor(this, R.color.dialogBackground)));
String txtColor = String.format("#%06X", (0xFFFFFF & ContextCompat.getColor(this, R.color.dialogText)));
相反,如果我从 Activity 中的 Fragment 调用 ContextCompat.getColor,它会返回错误的颜色
//get Actual Theme Colors
bgColor = String.format("#%06X", (0xFFFFFF & ContextCompat.getColor(getActivity(),R.color.dialogBackground)));
txtColor = String.format("#%06X", (0xFFFFFF & ContextCompat.getColor(getActivity(),R.color.dialogText)));
我正在使用 'androidx.appcompat:appcompat:1.0.2' 库
不知道是不是和这个bug有关
我希望您能找到解决方案或至少找到解决方法,例如从特定配置的资源中获取颜色(如果可能)。