Назад к вопросам
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 на путь к вашему пакету.