Sobes.tech
Middle

Ako by ste rozšírili TextView pomocou určitej metódy?

sobes.tech AI

Odpoveď od AI

Rozšíriť TextView je možné vytvorením vlastnej triedy, ktorá dedí od TextView, a prepísaním potrebných metód, napríklad onDraw() alebo onMeasure(). Napríklad:

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() {
        // Dodatočná inicializačná logika, ak je potrebná
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // Pridajte vlastnú logiku kreslenia, napríklad rámček alebo podčiarknutie
        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);
        // Pridajte vlastnú logiku merania rozmerov
        int width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec);
        int height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);
        setMeasuredDimension(width, height);
        // Môžete zmeniť namerané rozmery, ak je to potrebné
    }
}

V tomto príklade trieda CustomTextView dedí od AppCompatTextView. Metóda onDraw() bola prepísaná, aby pridala červený rám okolo textu, a onMeasure() zostáva nezmenená, ale ukazuje možnosť jej prepísania na prispôsobenie rozmerov.

Na použitie vlastného TextView v XML rozložení, uveďte úplný názov triedy:

<com.vasho_balicek.CustomTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Ahoj, vlastný TextView!" />

Nahraďte com.vasho_balicek cestou k vášmu balíčku.