首页 > 解决方案 > Android Dark Mode/Light Mode - android微调器下拉弹出背景颜色

问题描述

在将 Android 暗模式引入 android os 后,我遇到了一个冲突的问题,在我的应用程序中,我使用以下自定义样式来制作下拉菜单

在此处输入图像描述

在 app_text_box_design.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <layer-list>
            <item>
                <shape>
                    <solid android:color="@color/colorPrimaryAppBg" />
                    <corners android:radius="3dp" />
                    <stroke android:width="1px" android:color="@color/colorPrimaryBorder" />
                </shape>
            </item>
            <item android:width="30dp" android:gravity="right">
                <bitmap android:gravity="center_vertical|right" android:src="@drawable/baseline_arrow_drop_down_white_24" />
            </item>
        </layer-list>
    </item>
</selector>

在选择器中,我使用它如下

<Spinner
                    android:id="@+id/spIam"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="5dp"
                    android:background="@drawable/app_text_box_design"
                    android:padding="10dp" />

在暗模式下哪个工作正常,如果在 Android 暗模式中定义暗背景颜色,但是,如果用户更改为亮模式,它会与设计冲突,所以我想知道我们如何为这两种模式进行设置?

标签: javaandroidmobile

解决方案


这个问题与样式有关。您必须在活动样式中声明一个特定属性,以覆盖 MaterialComponents 中的默认白色。

假设您的下拉菜单是由 res 文件夹下的菜单创建的,您只需将此属性添加到您正在使用的样式中:

<item name="android:itemBackground">@color/colorExample</item>

请注意,由于您有明暗模式,您可能会有两种不同的样式,一种称为styles.xml,另一种称为styles-night.xml。确保根据您的模式更改颜色。


推荐阅读