暗模式:useColorScheme() 在 Android 上总是返回光

Posted

技术标签:

【中文标题】暗模式:useColorScheme() 在 Android 上总是返回光【英文标题】:Dark Mode: useColorScheme() always returns light on Android 【发布时间】:2021-09-15 11:34:26 【问题描述】:

我正在尝试让深色模式工作,但它在 android 上不起作用。它总是返回“光”。在 ios 上运行良好。

import React from 'react';
import  useColorScheme  from "react-native";

export default function App() 
  const theme = useColorScheme();
  alert("your color scheme is: " + theme); // always returns "light" on Android
  return null;

我正在使用 Expo SDK 42。

我将"userInterfaceStyle": "automatic" 放在我的app.json 中,但没有任何区别。

【问题讨论】:

这能回答你的问题吗? React Native 0.62.2 Appearance return wrong color scheme 不,它没有。我没有启用调试器。它发生在 Expo 的多台设备上以及为 Android (APK) 构建应用程序时 【参考方案1】:

我想通了。仅将"userInterfaceStyle": "automatic" 放在 app.json 根目录中是不够的,我还必须为 iOS 和 Android 单独定义它:

app.json:


  "expo": 
    "userInterfaceStyle": "automatic",
    "ios": 
      "userInterfaceStyle": "automatic"
    ,
    "android": 
      "userInterfaceStyle": "automatic"
    
  

【讨论】:

哦,天哪,这太荒唐了。它绝对应该添加到文档中,或者只是修复为回退到***值。谢谢!【参考方案2】:

为我工作


  expo 
    "userInterfaceStyle": "automatic",
    "ios": 
     "userInterfaceStyle": "automatic"
    ,
    "android": 
     "userInterfaceStyle": "automatic"
    

  

【讨论】:

以上是关于暗模式:useColorScheme() 在 Android 上总是返回光的主要内容,如果未能解决你的问题,请参考以下文章

为啥 JavaScript 不能在暗模式下工作?

如何在 iOS 中检查暗模式? [复制]

防止在不增加 SDK 版本的情况下在 MIUI 中强制暗模式

如何在模拟器上启用暗模式?

在miui(小米)中检测暗模式

在 SwiftUI App 中实现暗模式切换