Middle
Hoe zou je TextView uitbreiden met een specifieke methode?
sobes.tech AI
Antwoord van AI
Je kunt TextView uitbreiden door een eigen klasse te maken die erft van TextView en de benodigde methoden te overschrijven, bijvoorbeeld onDraw() of onMeasure(). Bijvoorbeeld:
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() {
// Extra initialisatie-logica indien nodig
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// Voeg je eigen tekenlogica toe, bijvoorbeeld een rand of onderstreping
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);
// Voeg je eigen logica toe om de afmetingen van de View te meten
int width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec);
int height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);
setMeasuredDimension(width, height);
// Je kunt de gemeten afmetingen aanpassen indien nodig
}
}
In dit voorbeeld erft de klasse CustomTextView van AppCompatTextView. De onDraw()-methode is overschreven om een rode rand rond de tekst toe te voegen, en onMeasure() blijft ongewijzigd, maar toont de mogelijkheid om deze aan te passen voor het instellen van de grootte.
Om een aangepaste TextView te gebruiken in XML-layout, geef je de volledige naam van de klasse op:
<com.jouwpakket.CustomTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hallo, aangepaste TextView!" />
Vervang com.jouwpakket door het pad naar jouw pakket.