Назад к вопросам
Middle
73
questionbank
Сколько конструкторов должно быть у кастомного представления (View) в Android?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Три:
View(Context context): Используется при программном создании View.View(Context context, @Nullable AttributeSet attrs): Используется при создании View из XML.AttributeSetсодержит атрибуты, заданные в XML.View(Context context, @Nullable AttributeSet attrs, int defStyleAttr): Используется при создании View из XML с указанием стиля по умолчанию.defStyleAttrуказывает атрибут в текущей теме, из которого следует получить стиль.
Обычно в кастомном представлении переопределяют два или три из этих конструкторов, вызывая соответствующий конструктор суперкласса и выполняя инициализацию.
public class MyCustomView extends View {
public MyCustomView(Context context) {
super(context);
init(null, 0); // Вызываем общую инициализацию
}
public MyCustomView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(attrs, 0); // Вызываем общую инициализацию
}
public MyCustomView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(attrs, defStyleAttr); // Вызываем общую инициализацию
}
// Общий метод инициализации
private void init(@Nullable AttributeSet attrs, int defStyleAttr) {
// Чтение атрибутов из attrs с учетом defStyleAttr
// Инициализация полей, настройка View
}
}