#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. У меня точно такая же проблема. Мое приложение зависит от нескольких библиотек, добавляющих в приложение различные функции. Я также хотел бы предоставить представлениям из этих библиотек стиль по умолчанию без ссылки на тему. Потому что тема может быть унаследована только из одной библиотеки.