Sobes.tech
Middle

Cum ai extinde TextView folosind o metodă specifică?

sobes.tech AI

Răspuns de la AI

Puteți extinde TextView creând o clasă proprie care moștenește de la TextView și suprascrie metodele necesare, de exemplu, onDraw() sau onMeasure(). De exemplu:

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() {
        // Logică suplimentară de inițializare, dacă este necesar
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // Adăugați propria logică de desen, de exemplu, o margine sau subliniere
        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);
        // Adăugați propria logică pentru măsurarea dimensiunilor View
        int width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec);
        int height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);
        setMeasuredDimension(width, height);
        // Puteți modifica dimensiunile măsurate, dacă este necesar
    }
}

În acest exemplu, clasa CustomTextView moștenește de la AppCompatTextView. Metoda onDraw() a fost suprascrisă pentru a adăuga o margine roșie în jurul textului, iar onMeasure() rămâne neschimbată, dar demonstrează posibilitatea de a o suprascrie pentru ajustarea dimensiunilor.

Pentru a utiliza un TextView personalizat în layout-ul XML, specificați numele complet al clasei:

<com.pachetulTau.CustomTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Salut, TextView personalizat!" />

Înlocuiți com.pachetulTau cu calea către pachetul dvs.