Middle
W jaki sposób rozszerzyłbyś TextView, używając określonej metody?
sobes.tech AI
Odpowiedź od AI
Możesz rozszerzyć TextView, tworząc własną klasę dziedziczącą po TextView i nadpisującą potrzebne metody, np. onDraw() lub onMeasure(). Na przykład:
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() {
// Dodatkowa logika inicjalizacji, jeśli jest potrzebna
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// Dodaj własną logikę rysowania, np. ramkę lub podkreślenie
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);
// Dodaj własną logikę pomiaru rozmiarów widoku
int width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec);
int height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);
setMeasuredDimension(width, height);
// Możesz zmienić zmierzone rozmiary, jeśli to konieczne
}
}
W tym przykładzie klasa CustomTextView dziedziczy po AppCompatTextView. Metoda onDraw() została nadpisana, aby dodać czerwony obramowanie wokół tekstu, a onMeasure() pozostaje bez zmian, ale demonstruje możliwość nadpisania jej w celu dostosowania rozmiarów.
Aby użyć własnego TextView w układzie XML, podaj pełną nazwę klasy:
<com.twoj_pakiet.CustomTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Witaj, spersonalizowany TextView!" />
Zastąp com.twoj_pakiet ścieżką do swojego pakietu.