如何在 Xamarin.Forms 中强制使用灯光模式?

Posted

技术标签:

【中文标题】如何在 Xamarin.Forms 中强制使用灯光模式?【英文标题】:How to force light mode in Xamarin.Forms? 【发布时间】:2021-01-18 19:36:30 【问题描述】:

我的应用的 UI 设计为在浅色模式下使用。但是如果手机的默认主题是暗模式,我的应用程序也会切换到暗模式,并且 UI 看起来很垃圾。所以我想强制我的应用使用灯光模式。我该怎么做?

在我使用UserAppTheme="Light"app.xaml 文件中,将内容页面的背景颜色设置为变体白色(例如#FFF#F2F3F4),但它仍然不起作用。 我什至尝试在styles.xml 中应用<style name="MainTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">。但是如果手机处于黑暗模式,所有类似白色的区域也会变暗。

我在 MIUI 12 中测试过。

【问题讨论】:

嗯,忽略用户的喜好,是无法通过店铺认证的。如何为黑暗模式自定义主题很容易谷歌。 【参考方案1】:

ios 更新你的info.plist:

<key>UIUserInterfaceStyle</key>
<string>Light</string>

androidMainTheme.Base的样式改为DayNight

<style name="MainTheme.Base" parent="Theme.AppCompat.DayNight.DarkActionBar">

来自James Montemagno blog的原始答案和更多详细信息

【讨论】:

在尝试应用您的答案时遇到一个新问题 [***.com/questions/64184045/…,如果在我的问题得到解决后它有效,我会将其标记为答案。【参考方案2】:

在 Android 上试试这个

Andriod 项目中:

    styles.xml 文件中的&lt;style&gt; 元素中添加:&lt;item name="android:forceDarkAllowed"&gt;false&lt;/item&gt;
<style name="MainTheme" parent="MainTheme.Base">
  <item name="android:forceDarkAllowed">false</item>
</style>
    MainActivity.csOnCreate 方法添加:AppCompatDelegate.DefaultNightMode = AppCompatDelegate.ModeNightNo
protected override void OnCreate(Bundle savedInstanceState)

    AppCompatDelegate.DefaultNightMode = AppCompatDelegate.ModeNightNo;
    base.OnCreate(savedInstanceState);

【讨论】:

以上是关于如何在 Xamarin.Forms 中强制使用灯光模式?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Xamarin.Forms.Maps(无 Xamarin.Forms.GoogleMaps)在地图中应用样式或更改颜色

Xamarin.Forms.UWP 数字键盘仅在软键盘上

在 Xamarin.Forms 中将图像裁剪为正方形

如何使用 ScnViewGestures.Forms 在 Xamarin.Forms 中使用 TouchDown 和 TouchUp 事件创建视图

在 Xamarin.Forms 中录制语音后如何保存音频文件

如何在 Xamarin.Forms 中获取/检测屏幕大小?