Исправление потребовалось некоторое время, чтобы выяснить, и на самом деле это в два раза:
Сначала в пользовательской теме я должен использовать просто colorAccent
, а не android:colorAccent
, иначе это смущает программу относительно того, определяю ли я локальное значение или значение уровня приложения.
Как только я исправил эту проблему, работает следующий вариант кода. (Вместо использования typedValue.data
, который, кажется, принадлежит приложению, я использую attrs
, который фактически принадлежит кнопке и передается через конструктор).
TypedArray a = context.obtainStyledAttributes(attrs, new int[] {R.attr.colorAccent});