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

Каким образом вы бы расширили TextView, используя определённый метод?

Sobes Copilot

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

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

sobes.tech AI

Расширить TextView можно путем создания собственного класса, наследующего TextView, и переопределения нужных методов, например, onDraw() или onMeasure(). Например:

public class CustomTextView extends androidx.appcompat.widget.AppCompatTextView {

    public CustomTextView(Context context) {
        super(context);
        init();
    }

    public CustomTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public CustomTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init() {
        // Дополнительная логика инициализации, если нужна
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // Добавляем свою логику отрисовки, например, рамку или подчеркивание
        Paint paint = new Paint();
        paint.setColor(Color.RED);
        paint.setStyle(Paint.Style.STROKE);
        paint.setStrokeWidth(2);
        canvas.drawRect(0, 0, getWidth(), getHeight(), paint);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        // Добавляем свою логику измерения размеров View
        int width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec);
        int height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);
        setMeasuredDimension(width, height);
        // Можно изменить измеренные размеры, если нужно
    }
}

В этом примере класс CustomTextView наследует AppCompatTextView. Переопределен метод onDraw() для добавления красной рамки вокруг текста, и onMeasure() остается без изменений, но демонстрирует возможность переопределения для настройки размеров.

Для использования кастомного TextView в XML разметке указывается полное имя класса:

<com.your_package_name.CustomTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello, Custom TextView!" />

Замените com.your_package_name на путь к вашему пакету.