Как автоматически отобразить разные ресурсы для темных и светлых тем в Android? - PullRequest
1 голос
/ 01 декабря 2010

Как я понял, есть две встроенные темы для Android, Light и Dark.Я хочу, чтобы мое приложение отображало различные ресурсы в зависимости от того, какую тему использует пользователь (НЕ если пользователь явно указывает тему в моем приложении!).Это возможно?Если да, то можно ли это сделать с помощью ресурсов XML или требуется программный подход?

Примечание. Да, я прочитал http://d.android.com/guide/topics/ui/themes.html как минимум трижды.Похоже, все, что говорит мне, как это сделать, это установить одну конкретную тему или стили для моего элемента, а не правильно отображать светлые / темные элементы.

Ответы [ 2 ]

0 голосов
/ 13 мая 2019

Да, это можно сделать с помощью ресурсов XML.

С https://developer.android.com/preview/features/darktheme#themes_and_styles:

В ваших темах и стилях следует избегать жестко заданных цветов или значков, предназначенных для использования в светлых темах. Вместо этого вы должны использовать атрибуты темы (предпочтительнее) или ночные ресурсы.

Так что да, для этого есть квалификаторы ресурсов, см. https://developer.android.com/guide/topics/resources/providing-resources.html#NightQualifier : night и notnight суффиксы.

Я нахожу сайт материальной темы довольно хорошим объяснением, но самая важная часть:

В качестве альтернативы, если вы хотите определить отдельные темы Light и Dark для своего приложения, вы можете наследовать от Theme.MaterialComponents.Light в каталоге values и Theme.MaterialComponents в каталоге values-night. E.g.:

Рез / значения / themes.xml

<style name="Theme.MyApp" parent="Theme.MaterialComponents.Light">
    <!-- ... -->
</style>

Рез / значение ночи / themes.xml

<style name="Theme.MyApp" parent="Theme.MaterialComponents">
   <!-- ... -->
</style>
0 голосов
/ 01 декабря 2010

Этот сайт можно проверить на наличие альтернативных папок для рисования.

http://developer.android.com/guide/topics/resources/providing-resources.html

Кроме того, этот документ может быть полезен. http://developer.android.com/guide/topics/ui/themes.html

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

...