Ben LinearLayout
uzatarak özel bir widget oluşturma:Özel Araç onDraw'u almıyorum()
public class MyWidget extends LinearLayout {
private static Paint PAINT = new Paint(Paint.ANTI_ALIAS_FLAG);
static {
PAINT.setColor(Color.RED);
}
public MyWidget(Context context) {
this(context, null);
}
public MyWidget(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawCircle(canvas.getWidth()/2, canvas.getHeight()/2, canvas.getWidth()/2, PAINT);
// never gets called :-(
}
@Override
protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
// this gets called, but with a canvas sized after the padding.
}
}
Ben sadece iyi çocuklara ekleyebilir, ama asla benim özel onDraw()
çağrıldığını alıyorum. dispatchDraw()
çağrılıyor, ama bu farklı bir tuval var gibi görünüyor (dolgu içinde olan. Tüm düzen alanı üzerinde çizmek gerekir). Düzen için onDraw()
almak için ayarlanması gereken bazı bayrak var mı?
Tuval 'genişliğini ve yüksekliğini kullanmayın, istediğiniz gibi değiller. –