Sobes.tech
Middle

Kaip išplėstumėte TextView naudodami tam tikrą metodą?

sobes.tech AI

Atsakymas iš AI

TextView galima išplėsti sukuriant savo klasę, kuri paveldi TextView ir perrašant reikiamus metodus, pavyzdžiui, onDraw() arba onMeasure(). Pavyzdžiui:

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() {
        // Papildoma inicializacija, jei reikalinga
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // Pridedame savo piešimo logiką, pvz., rėmelį arba pabraukimą
        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);
        // Pridedame savo matavimo logiką
        int width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec);
        int height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);
        setMeasuredDimension(width, height);
        // Jei reikia, galima keisti išmatuotus dydžius
    }
}

Šiame pavyzdyje CustomTextView klasė paveldi AppCompatTextView. onDraw() metodas perrašytas, kad pridėtų raudoną rėmelį aplink tekstą, o onMeasure() lieka nepakitęs, bet rodo, kad galima keisti matmenis.

Naudojimui XML išdėstyme nurodykite visą klasės kelią:

<com.your_package_name.CustomTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello, Custom TextView!" />

Pakeiskite com.your_package_name į savo paketo kelią.