Я уверен, что на этот вопрос уже был дан ответ. Это просто кажется слишком распространенным явлением. Но я не могу найти ответ. Я не могу понять решение.Цвет, зависящий от темы выбранных виджетов
Вот проблема:
Я хочу, чтобы один из моих TableRow, чтобы иметь различный цвет фона. Это просто, мне просто нужно добавить
android:background="#123456"
В XML-декларации TableRow. Но я также хочу, чтобы в моем приложении было две темы. В другой теме TableRow должен иметь разный цвет фона. Я просто не могу найти способ определить значение цвета внутри темы и использовать его. Я хотел бы ввести что-то вроде этого:
<style name="Theme.MyApp" parent="@style/Theme.Light">
<color "my_cool_color">#123456</color>
</style>
<style name="Theme.MyApp.Dark" parent="@style/Theme.Dark">
<color "my_cool_color">#654321</color>
</style>
И в декларации TableRow в:
android:background="@color/my_cool_color"
Так что, когда я меняю тему, цвет фона, что один TableRow также меняется. Я пробовал много раз в течение многих часов и не добился успеха ... Одна вещь, которую я не пробовал, создавал мой собственный виджет на основе TableRow и декларировал отдельный стиль для него - я думаю, что это должно сработать, но это просто слишком тяжелое решение для столь простой проблемы.
Спасибо! Я нашел что-то о attr.xml, но не нашел подходящего примера. Напротив, ваш ответ не может быть более полным! – user1234567
Я нашел ваш ответ очень полезным и решил свою проблему. +1. Но у меня все еще есть одна проблема, я хочу использовать определенные цвета в коде. Как я могу это сделать, как использовать цвета из attrs в коде (а не xml)? – Sandra
Да, но если я использую темную тему, я хочу, чтобы цвет был синим, а для другого - зеленым. Но как я могу получить правильный цвет в коде? – Sandra