Как получить цвет темы для пользовательской темы? - PullRequest
0 голосов
/ 14 сентября 2018

Я хочу получить цвет colorAccent темы кнопки, которую я определил в своем приложении. Я создал пользовательский класс кнопок. Однако, если я использую

TypedValue typedValue = new TypedValue();
TypedArray a = context.obtainStyledAttributes(typedValue.data, new int[] { 
R.attr.colorAccent });
int color = a.getColor(0, 0);

Я получаю приложение colorAccent по умолчанию, а не то, которое я определил для своей кнопки. Как я могу получить цвет темы кнопки?

1 Ответ

0 голосов
/ 14 сентября 2018

Исправление потребовалось некоторое время, чтобы выяснить, и на самом деле это в два раза:

Сначала в пользовательской теме я должен использовать просто colorAccent, а не android:colorAccent, иначе это смущает программу относительно того, определяю ли я локальное значение или значение уровня приложения.

Как только я исправил эту проблему, работает следующий вариант кода. (Вместо использования typedValue.data, который, кажется, принадлежит приложению, я использую attrs, который фактически принадлежит кнопке и передается через конструктор).

TypedArray a = context.obtainStyledAttributes(attrs, new int[] {R.attr.colorAccent});
...