android 如何手动获得颜色的浅色版本?

c3frrgcw  于 11个月前  发布在  Android
关注(0)|答案(1)|浏览(97)

我有一组20种颜色,有亮暗模式版本,我可以根据主题正常访问。但在某些情况下,我需要以编程方式将颜色的亮暗变体作为两个独立的变量,而不考虑应用程序的昼夜模式。有没有办法强制使用id解析颜色的哪个版本?
我的第一个想法是传递一个带有强制昼夜模式的假资源,类似于这样:

val resourceLight = //Light resource/context
val resourceDark = //Light resource/context

val colorLight = ContextCompat.getColor(resourceLight,R.color.chatTextColorTeal)
val colorDark = ContextCompat.getColor(resourceDark,R.color.chatTextColorTeal)

字符串
但我找不到任何方法去做。

mlnl4t2r

mlnl4t2r1#

不知道你是在使用XML还是Compose,所以我会尝试为两者写一个答案:
XML:
相当确定您可以通过使用上下文 Package 器从选定的模式(和配色方案)中获取颜色

val darkThemeContextWrapper = ContextThemeWrapper(context, R.style.yourDarkTheme)
val darkColor = ContextCompat.getColor(darkThemeWrapper, R.id.yourColor)

字符串
组成:
你应该能够手动引用相反的颜色,因为它几乎是一个全局变量,或者你可能想考虑使用contentcolorFor来获得一个颜色,以确保足够的对比度

相关问题