Sobes.tech
Middle

Comment étendriez-vous TextView en utilisant une méthode spécifique?

sobes.tech IA

Réponse de l'IA

Il est possible d'étendre TextView en créant une classe personnalisée qui hérite de TextView et en redéfinissant les méthodes nécessaires, par exemple, onDraw() ou onMeasure(). Par exemple :

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() {
        // Logique d'initialisation supplémentaire si nécessaire
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // Ajout de votre logique de dessin, par exemple, une bordure ou un soulignement
        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);
        // Ajoutez votre logique pour mesurer les dimensions de la vue
        int width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec);
        int height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);
        setMeasuredDimension(width, height);
        // Vous pouvez modifier les dimensions mesurées si nécessaire
    }
}

Dans cet exemple, la classe CustomTextView hérite de AppCompatTextView. La méthode onDraw() est redéfinie pour ajouter une bordure rouge autour du texte, et onMeasure() reste inchangée mais montre la possibilité de la redéfinir pour ajuster la taille.

Pour utiliser un TextView personnalisé dans la mise en page XML, indiquez le nom complet de la classe :

<com.votre_package.CustomTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Bonjour, TextView personnalisé !" />

Remplacez com.votre_package par le chemin vers votre package.