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.