ich ein eigenes Widget Erstellen LinearLayout
durch die Erweiterung:Benutzerdefinierte Widget mit Linearlayout nicht immer OnDraw()
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.
}
}
ich Kinder ganz gut hinzufügen kann, aber ich bin nie meine Gewohnheit immer onDraw()
genannt zu werden. dispatchDraw()
wird aufgerufen, aber das scheint eine andere Leinwand zu haben (die, die innerhalb der Polsterung ist. Ich muss auf den gesamten Layoutbereich zeichnen). Gibt es ein Flag, das gesetzt werden muss, um das Layout onDraw()
zu erhalten?
Verwenden Sie nicht die Breite und Höhe des Canvas, sie sind nicht was Sie wollen. –