在 Xamarin Android 中设置布局背景 - 覆盖暗模式

Posted

技术标签:

【中文标题】在 Xamarin Android 中设置布局背景 - 覆盖暗模式【英文标题】:Setting background of layout in Xamarin Android - overriding Dark Mode 【发布时间】:2021-10-04 03:41:18 【问题描述】:

我正在尝试为我的 android 应用设置背景。

但是用android:background 属性设置它不起作用:

<GridLayout ...
    android:background="#ffffff00">

我什至在父元素上设置了背景:

<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    android:background="#ffffff00">

但它仍然显示我只是黑暗的背景。

我在我的手机(如果重要的话是小米)上开启了黑暗模式。当我关闭此模式时,背景会按预期工作。

所以我想知道如何在应用中覆盖暗模式?

看起来这个暗模式已经覆盖了这个属性,这是不可能的。

【问题讨论】:

【参考方案1】:

你是如何让你的应用支持暗模式的?

我遵循docs ,只是将应用的主题(通常在res/values/styles.xml 中找到)设置为继承自DayNight 主题:

<style name="AppTheme" parent="Theme.AppCompat.DayNight">

灯光模式

深色模式

我这边的代码按预期工作。(黄色部分是 GridLayout)


建议

    在空白项目中测试。 在另一台设备上测试。

【讨论】:

其实我并没有做任何事情来支持应用程序中的暗模式。 你能在模拟器或其他设备上试试这个吗?【参考方案2】:

根据@Colex-MSFT 的回答,我解决了:

他对我应该提出的建议是正确的

<style name="AppTheme" parent="Theme.AppCompat.DayNight">

res/values/styles.xml)。然后我再次检查它并发现该项目是自动创建的,文件中包含以下部分:

<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
         Customize your theme here. 
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

(这些颜色刚刚在colors.xml 文件中定义)所以,我只是注释掉了这个(可能会删除)并留下建议的行并且它可以工作 - 在我的应用程序中不再强制使用暗模式:)

【讨论】:

以上是关于在 Xamarin Android 中设置布局背景 - 覆盖暗模式的主要内容,如果未能解决你的问题,请参考以下文章

在共享项目中设置 AndroidResource 构建操作

如何在Xamarin Forms中设置默认的非透明背景?

如何在 iPhone x 中设置安全区域布局

在 Rider IDE 中设置 Android Xamarin 解决方案未检测到框架

在Xamarin Forms中设置TableView宽度和高度

在android活动中设置片段的形状和透明度