Estoy creando un widget personalizado mediante la extensión de LinearLayout
:widget personalizado utilizando LinearLayout no conseguir 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.
}
}
puedo añadir los niños muy bien, pero nunca recibo mi costumbre onDraw()
que se llama. dispatchDraw()
se llama, pero parece tener un lienzo diferente (el que está dentro del relleno. Necesito dibujar en toda el área de diseño). ¿Hay algún indicador que deba establecerse para obtener onDraw()
llamado para el diseño?
No utilice el ancho y la altura del lienzo, no son lo que desea. –