Не могу заставить виджет перерисовываться, когда темный режим включен/выключенAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Не могу заставить виджет перерисовываться, когда темный режим включен/выключен

Сообщение Anonymous »

Я хочу, чтобы мой виджет менял цвет шрифта, когда пользователь переключает темный режим. У меня есть виджет, скажем, с фоновым изображением и текстовым представлением:

Код: Выделить всё

    [*]              android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/bkg_green"
android:id="@+id/widget_userstatus">





Заставить фон работать было несложно, я просто добавил png в drawable и drawable-night, и все сразу заработало.
Заставить фон работать было несложно, я просто добавил png в drawable и drawable-night, и все сразу заработало.
p>
Однако я также хочу изменить цвет текстового представления, но это кажется невозможным.
Вот что я пробовал:
  • WIDGETPROVIDER
    onUpdate(), onReceive(). К сожалению, оказывается, что поставщик виджетов никогда не вызывается системой при изменении конфигурации.
  • BROADCASTRECEIVER
    Пытался зарегистрироваться: Потому что Google Gemini сказал, что это должно работать. К сожалению, если вы посмотрите документацию Intent, там написано: «Вы не можете получить это через компоненты, объявленные в манифестах».
  • STYLES.XML:< /p>
    Я попробовал добавить папку Values-Night и добавить отдельный файл Styles.xml

    Код: Выделить всё

    @color/white
    600
    18dp
    
    
    а затем в Styles-Night:

    Код: Выделить всё

    @color/black
    
    
  • COLORS.XML:
    Вместо нескольких стилей.xml я попробовал использовать один style.xml, но несколько цветов.xml.

    Код: Выделить всё

    @font/nubafont
    @color/statusWidgetTextColor
    600
    18dp
    
    
    а затем в Colors.xml в Styles и Styles-Night:

    Код: Выделить всё

    @color/white
    @color/black
    
  • ТЕМЫ
    Я пытался установить тему в корне LinearLayout, но не смог это ни на что не влияет.
Ничто из этого не сработало. Когда я вызываю обновление виджета вручную из приложения после переключения темного режима, к виджету применяется правильная версия темного режима с использованием описанных выше подходов XML, но он никогда не запускается сам по себе — меняется только фоновое изображение.
Я хочу применить день/ночь только к виджету, а не ко всему приложению. Как мне это сделать?

Подробнее здесь: https://stackoverflow.com/questions/792 ... ned-on-off
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»