【问题标题】:Xamarin.Android: Reload MainActivity on RequestedThemeChangedXamarin.Android:在 RequestedThemeChanged 上重新加载 MainActivity
【发布时间】:2022-01-17 16:46:44
【问题描述】:

在关注blog 之后,我们正在尝试实施暗模式。一切似乎都在工作,除非我们尝试在移动设置中更新暗模式(在初始启动之后)。前台 App 不刷新暗/亮模式变化。

App.xaml.cs:

 Current.RequestedThemeChanged += (s, args) =>
            {
                Current.UserAppTheme = args.RequestedTheme;
            };

在“设置”页面尝试更新暗模式时,上述事件未触发(例如第二次)。

我只是好奇,是否有任何解决方法可以解决上述问题或刷新 ThemeChanged 上的 MainActivity。

如果需要更多信息,请确认。

【问题讨论】:

  • 我用示例Xamarin.Forms - Respond to System Theme Changes 进行了测试,但我无法在我的设备上重现此问题。(android 9)。您能否发布重现此问题的步骤?
  • 按照文档后我启动了应用程序,然后转到设置 > 应用深色主题 > 切换到应用程序(没有杀死应用程序)> 应用程序在深色主题中显示。然后保持应用程序最小化,再次进入设置>切换回浅色主题。最小化的应用程序现在不反映系统更改灯光主题,并且 RequestThemeChanged 事件不会再次触发。
  • Then keep the App minimized, Go to settings again > switch back to light theme. The minimized app doesn't reflect the System changing light theme now 更改深色主题后,您是否点击了最小化的应用并使其回到了最前面?
  • 要收听 RequestThemeChanged 事件,我需要将应用程序提前,似乎该事件没有触发,这反过来也不会改变应用程序主题。
  • 抱歉,我们无法在我的设备上重现此问题。你用的是什么设备?手机的型号和版本是什么?

标签: xamarin xamarin.forms xamarin.android android-darkmode


【解决方案1】:

在 doc Respond to system theme changes / section "React to theme changes" 中有这样的注释:

重要:
要响应 Android 上的主题更改,您必须在 MainActivity 类的 Activity 属性中包含 ConfigChanges.UiMode 标志。

【讨论】:

  • 正如我所说,我完全按照文档来实现暗模式。它只是在我们更新系统主题时不起作用,例如第二次通过设置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多