Xamarin Forms Shell文本颜色无法修改 深色模式显示异常如何解决?
问题根源
你当前的Shell样式使用了固定的静态色值,且未禁用系统深色模式自动适配,手机开启深色模式后系统会自动对应用界面做色彩反转,才会出现文本颜色异常、黑白图片变负片的问题。
方案1:强制应用仅使用亮色模式(无需适配暗黑模式可选)
- 安卓端修改:打开安卓项目的
MainActivity.cs,在OnCreate方法中加入以下代码,禁用系统暗黑模式适配:
AppCompatDelegate.DefaultNightMode = AppCompatDelegate.ModeNightNo;
- iOS端修改:打开iOS项目的
Info.plist,添加如下配置:
<key>UIUserInterfaceStyle</key> <string>Light</string>
方案2:适配暗黑模式的Shell样式
如果需要同时支持明暗两种模式,将原来固定的色值替换为AppThemeBinding,分别定义亮色和深色模式下的对应颜色,修改你的AppShell.xaml中BaseStyle的Setter如下:
<Style x:Key="BaseStyle" TargetType="Element"> <Setter Property="Shell.BackgroundColor" Value="{AppThemeBinding Light=#0f4057, Dark=#121212}" /> <Setter Property="Shell.ForegroundColor" Value="{AppThemeBinding Light=White, Dark=#E0E0E0}" /> <Setter Property="Shell.TitleColor" Value="{AppThemeBinding Light=White, Dark=#E0E0E0}" /> <Setter Property="Shell.DisabledColor" Value="{AppThemeBinding Light=#B4FFFFFF, Dark=#80FFFFFF}" /> <Setter Property="Shell.UnselectedColor" Value="{AppThemeBinding Light=#95FFFFFF, Dark=#60FFFFFF}" /> <Setter Property="Shell.TabBarForegroundColor" Value="{AppThemeBinding Light=White, Dark=#E0E0E0}"/> <Setter Property="Shell.TabBarUnselectedColor" Value="{AppThemeBinding Light=#95FFFFFF, Dark=#60FFFFFF}"/> <Setter Property="Shell.TabBarTitleColor" Value="{AppThemeBinding Light=White, Dark=#E0E0E0}"/> </Style>
图片负片问题修复
如果不需要系统自动反转图片,可通过以下方式配置:
- 针对单个图片:给
Image控件添加属性IconColor="{AppThemeBinding Light=Black, Dark=Black}",可根据实际需求调整固定色值 - 全局禁用iOS图片反转:将iOS项目中的图片资源渲染模式设置为
Original,避免系统自动做色彩 tint 反转
内容的提问来源于stack exchange,提问作者Ev1ls0n
相关产品推荐
相关产品推荐

