Sobes.tech
Middle

Come espanderesti TextView usando un metodo specifico?

sobes.tech AI

Risposta dell'AI

Puoi estendere TextView creando una tua classe che eredita da TextView e sovrascrivendo i metodi necessari, ad esempio onDraw() o onMeasure(). Per esempio:

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() {
        // Logica di inizializzazione aggiuntiva, se necessaria
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // Aggiungi la tua logica di disegno, ad esempio, un bordo o una sottolineatura
        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);
        // Aggiungi la tua logica per misurare le dimensioni della View
        int width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec);
        int height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);
        setMeasuredDimension(width, height);
        // Puoi modificare le dimensioni misurate, se necessario
    }
}

In questo esempio, la classe CustomTextView eredita da AppCompatTextView. Il metodo onDraw() è stato sovrascritto per aggiungere un bordo rosso intorno al testo, e onMeasure() rimane invariato, ma dimostra la possibilità di sovrascriverlo per personalizzare le dimensioni.

Per usare un TextView personalizzato nel layout XML, si specifica il nome completo della classe:

<com.tuo_pacchetto.CustomTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Ciao, TextView Personalizzato!" />

Sostituisci com.tuo_pacchetto con il percorso del tuo pacchetto.