You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 19:27:04