Sobes.tech
Middle

Kako biste proširili TextView koristeći određenu metodu?

sobes.tech АИ

Одговор од АИ

Možete proširiti TextView kreiranjem sopstvene klase koja nasleđuje TextView i prepisivanjem potrebnih metoda, na primer, onDraw() ili onMeasure(). Na primer:

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() {
        // Dodatna logika inicijalizacije, ako je potrebna
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // Dodajte svoju logiku crtanja, na primer, okvir ili podvlačenje
        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);
        // Dodajte svoju logiku za merenje dimenzija
        int width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec);
        int height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);
        setMeasuredDimension(width, height);
        // Možete promeniti izmerene dimenzije ako je potrebno
    }
}

U ovom primeru, klasa CustomTextView nasleđuje od AppCompatTextView. Metoda onDraw() je prepisana da doda crvenu ivicu oko teksta, a onMeasure() ostaje nepromenjena, ali pokazuje mogućnost prepisivanja za prilagođavanje dimenzija.

Za korišćenje prilagođenog TextView u XML rasporedu, navedite pun naziv klase:

<com.vas_paket.CustomTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Zdravo, prilagođeni TextView!" />

Zamenite com.vas_paket putanjom do vašeg paketa.