在我的应用程序中,我为控件定义了颜色。大多是这样的
{StaticResource Black}
有些像这样,因为当我将值设置为禁用时,我在更改颜色时遇到了一些问题
{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray200}}
另外,启动应用程序时,我是这样将模式设置为Light的:
Current.UserAppTheme = AppTheme.Light;
但即便如此,如果手机有深色模式的设置,我的对话就会这样触发
Application.Current.MainPage.DisplayAlert
有灰色背景而不是白色。在某些情况下,例如,编辑器的背景是黑色而不是白色。
使用应用程序时如何强制手机进入灯光模式?
要阻止毛伊岛的黑暗模式,您需要通过本机应用来强制它。
在我看来,这是比在跨平台代码中应用黑客更好的解决方案,即使不处理黑暗模式本身就是一种黑客。
在您的原生 Android Activity 的 onCreate 方法中添加以下内容:
AppCompatDelegate.DefaultNightMode = AppCompatDelegate.ModeNightNo;
对于 iOS,您需要编辑
Info.plist
文件并添加以下内容:
<key>UIUserInterfaceStyle</key>
<string>Light</string>
如果您希望应用程序处于浅色模式,即使设备处于深色模式,您也必须覆盖应用程序中的默认主题。
对于每个视图(codeBehind),在构造函数中添加此行:
Application.Current.UserAppTheme = AppTheme.Light;
然后,转到 Platforms 查找 Android 文件夹并添加
AppCompatDelegate.DefaultNightMode = AppCompatDelegate.ModeNightNo;
到 MainApplication 类构造函数。
这两个步骤是获得所需结果所必需的。
要在应用程序中强制启用灯光模式,只需在应用程序的构造函数中将
UserAppTheme
设置为 AppTheme.Light
:
.../App.xaml.cs
namespace MyProject
{
public partial class App
{
UserAppTheme = AppTheme.Light;
// or, fully qualified:
Application.UserAppTheme = Microsoft.Maui.ApplicationModel.AppTheme.Light;
}
}
正如 Josh Brunton 所指出的,您可以在 App 类中全局设置它。 (我会投票,但我还没有足够的代表)微软自己的文档推荐它,如下所示:https://learn.microsoft.com/en-us/dotnet/maui/user-interface/system-theme -changes?view=net-maui-8.0#set-the-current-user-theme
Application.Current.UserAppTheme = AppTheme.Dark;