Android 夜间模式颜色不适用于回收器视图背景

Android 夜间模式颜色不适用于回收器视图背景,android,android-recyclerview,android-styles,android-night-mode,android-dark-theme,Android,Android Recyclerview,Android Styles,Android Night Mode,Android Dark Theme,我想为我的android应用程序实现夜间模式,所以我使用了Theme.AppCompat.DayNight主题来实现夜间模式。 但是我必须在夜间模式下自定义工具栏和回收器视图的颜色 为此,我在attrs.xml文件中声明了该属性,并在recyclerview中将该属性用作背景 下面是attrs.xml文件 <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="d

我想为我的android应用程序实现夜间模式,所以我使用了Theme.AppCompat.DayNight主题来实现夜间模式。 但是我必须在夜间模式下自定义工具栏和回收器视图的颜色

为此,我在attrs.xml文件中声明了该属性,并在recyclerview中将该属性用作背景

下面是attrs.xml文件

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="ds">
        <attr name="rv_color" format="color"/>
    </declare-styleable>
</resources>
上述行出现在活动文件中,可切换到夜间模式。

但每次回收器视图的颜色都是红色,即来自styles.xml

<style name="AppTheme" parent="Theme.AppCompat.DayNight">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@android:color/white</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="android:textColorPrimary">@color/colorPrimary</item>
    <item name="android:windowDisablePreview">false</item>
    <item name="rv_color">#FF0000</item>
</style>
为什么styles.xml(夜间)颜色不适用于recyclerview


为什么它不起作用?或者任何其他方法来实现这一点?

另一种方法是在您的资源中创建一个values night文件夹,在其中放置一个colors.xml并声明一种类似“rv_color”的颜色:

#ffff00
在常规值/colors.xml中:

<color name="rv_color">#ff0000</color>
#ff0000

将recyclerview的颜色设置为该颜色。不需要声明任何自定义属性。

当我第一次尝试实现ondzilla的建议时,它不起作用。但是,当我将recyclerview背景设置为colors.xml文件中已有的另一种颜色时,背景现在可以在白天/晚上之间正确切换。然后我把它切换回rv_颜色,它工作正常

不知道这是否会对你的问题有所帮助,但我非常高兴你问了这个问题,我的问题现在可以解决了。

我也遇到了同样的问题(只是RecyclerView总是在styles.xml(night)中定义颜色,不管白天还是晚上模式是否被激活),并在中找到了解决方案;我唯一需要改变的就是不要打电话

getApplicationContext() 
但是使用

MyActivity.this 
而是在使用创建适配器时

MyAdapter adapter = new MyAdapter(getApplicationContext(), arrayList);
在相应的活动中。工作解决方案:

MyAdapter adapter = new MyAdapter(MyActivity.this, arrayList);

只有
rv_color
不起作用!?是的,其他参数值是从夜间模式自动设置的,如卡片背景、文本颜色等。但我必须对其进行自定义。@RohitSuthar嘿,找到解决方案了吗?我在两个文件中都定义了颜色,但它不起作用。每次应用colors.xml而不是colors.xml(夜间)中的颜色时。请查看这些评论。我已经有这个问题一个小时了,这是唯一有效的解决方案。非常感谢。非常感谢您的解决方案,我花了很多天的时间试图找到改变主题的解决方案,即使我不知道如何在StackOverflow上发布此问题,以使人们了解我遇到的错误,
getApplicationContext() 
MyActivity.this 
MyAdapter adapter = new MyAdapter(getApplicationContext(), arrayList);
MyAdapter adapter = new MyAdapter(MyActivity.this, arrayList);