首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Xamarin窗体的运行时启用OS AppTheme暗/亮

如何在Xamarin窗体的运行时启用OS AppTheme暗/亮
EN

Stack Overflow用户
提问于 2020-06-21 13:06:55
回答 2查看 3K关注 0票数 1

我跟踪对系统主题变化的响应,以响应xamarin表单应用程序的操作系统主题。该应用程序支持黑暗和光明的主题与AppThemeBinding。我没有使用任何定制的主题。我只关注操作系统的主题。因此,我有一个Switch,用户更愿意启用暗模式(与操作系统相同)。该链接建议使用以下代码来启用指定的模式(例如暗模式)。

代码语言:javascript
复制
Application.Current.UserAppTheme = OSAppTheme.Dark;

上面的代码什么也不做,但是如果我在App.cs之后用InitializeComponent()编写上面的代码,应用程序就会更改为Dark Mode

然后,我意识到在Android中重新启动MainActivity,这是在依赖关系的帮助下完成的。

代码语言:javascript
复制
[assembly: Dependency(typeof(AndroidThemeChanged))]
    public class AndroidThemeChanged : ITheme
        {
            public void OnThemeChanged()
            {
                var activity = CrossCurrentActivity.Current.Activity;
                var intent = GetLauncherActivity();
                activity.Finish();
                activity.StartActivity(intent);
            }
            public static Intent GetLauncherActivity()
            {
                var packageName = AndroidApp.Context.PackageName;
                return AndroidApp.Context.PackageManager.GetLaunchIntentForPackage(packageName);
            }
        }

并称之为

代码语言:javascript
复制
if (Device.RuntimePlatform == Device.Android)
   DependencyService.Get<ITheme>().OnThemeChanged();

是否有任何方法不考虑OS theme (黑暗/光明)而更新应用程序主题而不重新启动MainActivity

EN

Stack Overflow用户

回答已采纳

发布于 2020-06-21 14:42:27

我的错,我想我错了。我问题中的代码如预期的那样工作。我不需要让Android服务重新启动活动。无论操作系统主题如何,从任何更改主题到黑暗的地方调用下面的内容。

Application.Current.UserAppTheme = OSAppTheme.Dark;

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62498952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档