Как определить стиль пользовательского представления по умолчанию без использования пользовательской темы?

#android #android-custom-view

#Android #android-пользовательский вид

Вопрос:

Моя цель — установить неявный стиль для пользовательского представления Android.

Конструктор класса View с 3 аргументами позволяет предоставить желаемый ресурс стиля по умолчанию.

 public MyCustomView(Context context, AttributeSet attrs, int defStyle)
{
}
  

Я хотел бы применить следующий стиль по умолчанию.

 <style name="MyWidgetLibrary.MyCustomView">
    <item name="android:padding">10dp</item>
    <!-- more items... -->
</style>
  

Однако defStyle должен быть атрибутом. На самом деле, я хотел бы иметь возможность делать следующее, напрямую ссылаясь на стиль; не атрибут.

 public MyCustomView(Context context, AttributeSet attrs)
{
    this(context, attrs, R.style.MyWidgetLibrary_MyCustomView);
}
  

Это не работает.

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

Как я могу применить стиль по умолчанию к пользовательскому представлению без необходимости устанавливать пользовательскую тему для приложения? Например, я хотел бы сделать свой пользовательский вид доступным как часть библиотеки и не требовать от пользователей установки другой темы только для применения желаемых атрибутов по умолчанию.

Спасибо!

Комментарии:

1. У меня точно такая же проблема. Мое приложение зависит от нескольких библиотек, добавляющих в приложение различные функции. Я также хотел бы предоставить представлениям из этих библиотек стиль по умолчанию без ссылки на тему. Потому что тема может быть унаследована только из одной библиотеки.