如何在 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>
android将MainTheme.Base
的样式改为DayNight
:
<style name="MainTheme.Base" parent="Theme.AppCompat.DayNight.DarkActionBar">
来自James Montemagno blog的原始答案和更多详细信息
【讨论】:
在尝试应用您的答案时遇到一个新问题 [***.com/questions/64184045/…,如果在我的问题得到解决后它有效,我会将其标记为答案。【参考方案2】:在 Android 上试试这个
在 Andriod 项目中:
-
在 styles.xml 文件中的
<style>
元素中添加:<item name="android:forceDarkAllowed">false</item>
<style name="MainTheme" parent="MainTheme.Base">
<item name="android:forceDarkAllowed">false</item>
</style>
-
在 MainActivity.cs 中
OnCreate
方法添加: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)在地图中应用样式或更改颜色
如何使用 ScnViewGestures.Forms 在 Xamarin.Forms 中使用 TouchDown 和 TouchUp 事件创建视图