Sobes.tech
Middle

Hogyan bővítenéd a TextView-t egy adott módszerrel?

sobes.tech MI

Válasz az MI-től

A TextView bővíthető úgy, hogy saját osztályt hozunk létre, amely öröklődik a TextView-ből, és felülírjuk a szükséges metódusokat, például az onDraw() vagy az onMeasure()-t. Például:

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() {
        // További inicializálási logika, ha szükséges
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // Saját rajzolási logika hozzáadása, például keret vagy aláhúzás
        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);
        // Saját méretmérés logika hozzáadása
        int width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec);
        int height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);
        setMeasuredDimension(width, height);
        // Szükség szerint módosíthatja a mért méreteket
    }
}

Ebben a példában a CustomTextView osztály öröklődik az AppCompatTextView-ből. Az onDraw() felülírásra került, hogy piros keretet adjon a szöveg köré, az onMeasure() pedig változatlan marad, de bemutatja a felülírás lehetőségét a méretek beállítására.

A saját TextView használatához az XML elrendezésben meg kell adni a teljes osztálynevet:

<com.sajat_csomag.CustomTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Helló, egyedi TextView!" />

Cseréld ki a com.sajat_csomag-ot a saját csomagod elérési útjára.