如何在.NET Maui中调用Windows/Android系统强调色?
获取系统强调色作为应用主题方案
Windows平台实现
你提到的Windows.UI.ViewManagement API是完全可行的,这是UWP/WinUI应用获取系统强调色的官方标准方式。
核心代码实现
using Windows.UI.ViewManagement; // 在页面类或应用初始化逻辑中 var uiSettings = new UISettings(); var accentColor = uiSettings.GetColorValue(UIColorType.Accent);
注意事项
- 该API仅适用于UWP、WinUI 3等Windows现代应用框架
- 若要监听强调色变化(用户在系统设置中修改颜色时),可以订阅
UISettings.ColorValuesChanged事件,实时更新应用主题 - 获取到的
accentColor是Windows.UI.Color类型,可直接用于设置控件的Foreground、Background等属性,或转换为XAML资源供全局使用
Android平台实现
Android中获取系统调色板对应的强调色,可通过以下方式:
核心代码实现
// 在Activity或Fragment中 val accentColor = ContextCompat.getColor(this, com.google.android.material.R.attr.colorPrimary) // 或者获取系统主题中的强调色变体 val accentColorVariant = ContextCompat.getColor(this, com.google.android.material.R.attr.colorPrimaryVariant)
注意事项
- 若使用Material Design 3,可通过
MaterialTheme.colorScheme.primary直接获取系统设置的主色调 - 同样可以监听系统主题变化,通过
Configuration.UI_MODE_NIGHT_MASK结合注册BroadcastReceiver或使用AppCompatDelegate的回调来实时更新应用主题
跨平台统一方案(可选)
如果你的应用基于跨平台框架开发,可使用框架原生API统一获取系统强调色:
- MAUI:通过
AppInfo.RequestedTheme结合Microsoft.Maui.Graphics.Color的系统主题属性获取 - Flutter:使用
Theme.of(context).colorScheme.primary直接获取当前系统主题的主色调
内容的提问来源于stack exchange,提问作者Sepehr Hekmat Rad
相关产品推荐
相关产品推荐

