Назад к вопросам
Middle
73
questionbank

Сколько конструкторов должно быть у кастомного представления (View) в Android?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Три:

  1. View(Context context): Используется при программном создании View.
  2. View(Context context, @Nullable AttributeSet attrs): Используется при создании View из XML. AttributeSet содержит атрибуты, заданные в XML.
  3. 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
    }
}