Ночной режим цвет не применяется к фону просмотра переработчика - PullRequest
1 голос
/ 21 октября 2019

Я хочу реализовать ночной режим для своего приложения для Android, поэтому я использовал тему Theme.AppCompat.DayNight для реализации ночного режима. Но мне нужно настроить цвет панели инструментов и вида рециркулятора во время ночного режима.

Для этого я объявил атрибут в файле attrs.xml и использую этот атрибут в качестве фона в представлении реселлера.

Вот файл attrs.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="ds">
        <attr name="rv_color" format="color"/>
    </declare-styleable>
</resources>

Вот обзор переработчика

 <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="?attr/rv_color"
        android:overScrollMode="never"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

Теперь для стилей я объявил styles.xml и styles.xml (night) для ночного режима.

Вот файл 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 (ночь)

<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">#FFFF00</item>
</style>

В файле styles.xmlЯ определил КРАСНЫЙ цвет для фона повторного просмотра и ЖЕЛТЫЙ цвет в файле ночного режима.

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);

Приведенная выше строка присутствует в файле Activity для режима Night.

Но каждый раз, когда цвет представления рециркулятора становится КРАСНЫМ, т.е. из файла styles.xml

Почему цвет styles.xml (night) не применяется к виду рециркулятора.

Почему он не работает? или любой другой способ сделать это?

Ответы [ 2 ]

1 голос
/ 21 октября 2019

Другой способ - создать в ваших ресурсах ночную папку values, поместить в нее файл colors.xml и объявить цвет, например, «rv_color»:

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

и в обычных значениях / цветах.xml:

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

Установите цвет вашего рециклиста на этот цвет. Нет необходимости объявлять какие-либо пользовательские атрибуты.

0 голосов
/ 07 ноября 2019

Когда я впервые попробовал реализовать предложение ondzilla, это не сработало. Тем не менее, когда я установил в качестве цвета для повторного просмотра другой цвет, который у меня уже был в файле colors.xml, фон теперь корректно переключается между днем ​​и ночью. Затем я переключил его обратно на rv_color, и он работает правильно.

Не знаю, поможет ли это вам, но я очень рад, что вы задали этот вопрос, и мой теперь работает.

...