xamarin.forms - 如何在 Xamarin.Forms 中检查暗模式

标签 xamarin.forms xamarin.android xamarin.ios

现在,iOS 13Android Q允许用户在操作系统级别启用暗模式,我如何在 Xamarin.Forms 中检查它?

我已经在我的 Xamarin.Forms 项目中创建了它,但我不确定如何从 Xamarin.iOS 和 Xamarin.Android 检索值。

IEnvironment.cs

using System.Threading.Tasks;

namespace MyNamespace
{
    public interface IEnvironment
    {
        Theme GetOperatingSystemTheme();
        Task<Theme> GetOperatingSystemThemeAsync();
    }

    public enum Theme { Light, Dark }
}

应用程序

using Xamarin.Forms;

namespace MyNamespace
{
    public App : Application
    {
        // ...

        protected override async void OnStart()
        {
            base.OnStart();

            Theme theme = DependencyService.Get<IEnvironment>().GetOperatingSystemTheme();

            SetTheme(theme);
        }

        protected override async void OnResume()
        {
            base.OnResume();

            Theme theme = DependencyService.Get<IEnvironment>().GetOperatingSystemTheme();

            SetTheme(theme);
        }

        void SetTheme(Theme theme)
        {
            //Handle Light Theme & Dark Theme
        }
    }
}

最佳答案

截至 2020 年 4 月的更新:
不再需要使用特定于平台的服务来检查 Xamarin.Forms 中的亮/暗模式。
我们现在可以通过以下方式直接获取当前主题:

OSAppTheme currentTheme = Application.Current.RequestedTheme;
哪里RequestedTheme属性返回 OSAppTheme枚举成员:Unspecified , Dark , 或 Light .
更多信息:见documentationupdated Xamarin.Forms Application.cs code .

关于xamarin.forms - 如何在 Xamarin.Forms 中检查暗模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57879523/

相关文章:

c# - 无法将位图转换为字节 []

android - HttpClient-Xamarin 安卓-MvvmCross

c# - 对 Mac 上的 Xamarin Studio 的 MVVM 交叉支持

logging - 在 xamarin studio 中激活日志输出

iphone - Xamarin.iOS:部署到设备失败,错误代码为 "failed to acquire command execution log"

android - 在项目中添加Monogame的正确方法

Xamarin:发生地理定位错误:未经授权

ios - NSURLSession/NSURLConnection HTTP 加载失败(kCFStreamErrorDomainSSL,-9802)Xamarin.Forms IOS

android - 每次更新后应用程序快捷方式都会消失,我的 list 有什么问题?

xamarin.ios - Xamarin.iOS 中的单选按钮听点击?