Sobes.tech
Middle

De que forma expandiria o TextView usando um método específico?

sobes.tech IA

Resposta da IA

É possível expandir o TextView criando uma classe personalizada que herde de TextView e sobrescrevendo os métodos necessários, por exemplo, onDraw() ou onMeasure(). Por exemplo:

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() {
        // Lógica adicional de inicialização, se necessário
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // Adiciona sua lógica de desenho, por exemplo, uma moldura ou sublinhado
        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);
        // Adiciona sua lógica para medir as dimensões da View
        int width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec);
        int height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);
        setMeasuredDimension(width, height);
        // Pode modificar as dimensões medidas, se necessário
    }
}

Neste exemplo, a classe CustomTextView herda de AppCompatTextView. O método onDraw() é sobrescrito para adicionar uma moldura vermelha ao redor do texto, e onMeasure() permanece sem alterações, mas demonstra a possibilidade de sobrescrevê-lo para ajustar tamanhos.

Para usar um TextView personalizado no layout XML, indique o nome completo da classe:

<com.seu_pacote.CustomTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Olá, TextView Personalizado!" />

Substitua com.seu_pacote pelo caminho para o seu pacote.