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ą.