Модификация Стилера и Винса сработала для меня. Я хотел отметить, что объяснение @ vince может быть не совсем точным.
Чтобы проверить гипотезу о том, что атрибут name declare-styleable
, совпадающий с именем класса пользовательского представления, позволяет нам получить доступ к пользовательскому атрибуту без пространства имен, я изменил имя declare-styleable
(пользовательское представление было названо TestViewFont
<declare-styleable name="TextViewFont2">
<attr name="font" format="integer"/>
</declare-styleable>
Затем я изменил вызов obtainStyledAttributes
в пользовательском представлении, чтобы отразить это:
TypedArray ta = context.getTheme().obtainStyledAttributes(attrs, R.styleable.TextViewFont2, 0, 0);
Код все еще работает. Поэтому я не думаю, что это какой-то самоанализ со стороны declare-styleable
класса, в честь которого он назван.
Таким образом, меня убеждают, что любые пользовательские атрибуты могут использоваться для объявления стиля без ссылки на пространство имен.
Несмотря ни на что, спасибо за помощь, ребята, это решило мою проблему.