Как настроить чертежи в ночном режиме, чтобы они работали должным образом

И что менять фон при смене ночного режима.

У меня есть папки / values ​​и / values-night, которые содержат «colors.xml» с разными значениями. `

<color name="grey1">#ebebeb</color>
<color name="grey2">#c7c7c7</color>
<color name="grey3">#999999</color>
<color name="hover1">#8bb065</color>
<color name="red1">#ba0000</color>
<color name="red2">#ff0000</color>
<color name="green1">#336600</color>
<color name="text1">#000000</color>

and other is

<color name="grey1">#999999</color>
<color name="grey2">#333333</color>
<color name="grey3">#000000</color>
<color name="hover1">#8bb065</color>
<color name="red1">#ba0000</color>
<color name="red2">#ff0000</color>
<color name="green1">#336600</color>
<color name="text1">#ffffff</color>

these colors are used in layer list for background "activity_main_bg2.xml":

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape android:shape="rectangle" >
            <solid android:color="@color/grey1" />
        </shape>
    </item>
    <item
        android:bottom="1dp"
        android:left="1dp"
        android:right="1dp">
        <shape android:shape="rectangle" >
            <solid android:color="@color/grey2" />
        </shape>
     </item>
</layer-list>

Моя активность содержит фрагмент:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world_dark"
    android:background="@drawable/activity_main_bg2" />

Когда я меняю время с дневного на ночное или наоборот, цвета фона не меняются. Но если я использую

android:background="@color/grey1"

все работает нормально.

Как это решить? Это ошибка андроида?


person Solata    schedule 15.10.2013    source источник
comment
Вы уверены, что UiModeManager.getNightMode() вернет MODE_NIGHT_AUTO?   -  person Mohamed_AbdAllah    schedule 20.10.2013
comment
@Mohamed_AbdAllah: Да, я уверен. Как сказано в последнем предложении, если я установил цвет фона, он будет работать как надо. Это не так, если я установил список слоев.   -  person Solata    schedule 21.10.2013


Ответы (1)


Пожалуйста, попробуйте это:

  1. Создайте файл style.xml в папке res / values ​​и res / values-night.
  2. Добавьте к ним оба стиля для вашего TextView, например:

    <style name="textViewStyle">
    <item name="android:background">@drawable/activity_main_bg2</item>
    </style>
    
  3. Обновите свой макет до:

    <TextView
    style="@style/textViewStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world_dark" />
    

Это решение должно получить цвет свойства, зависящий от дневного / ночного режима.

person mamakurka    schedule 21.10.2013
comment
Отличное альтернативное решение! Но почему у нас должна быть копия style.xml как в res / values, так и в res / values-night? Из документации, если res xml не найден в / values-night, он должен взять один из / values. Я действительно хотел бы знать, почему это происходит !? - person Solata; 22.10.2013
comment
Кажется, скопируйте activity_main_bg2.xml в drawable-night, эти два xml имеют одинаковое содержимое, также отлично работает. Но я думаю, что в этом нет необходимости. - person peerless2012; 06.12.2019