Widget personalizado usando LineairLayout não obtendo onDraw ()

Estou criando um widget personalizado ao estender o LineairLayout :

 public class MyWidget extends LineairLayout { 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); } @Oviewride protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawCircle(canvas.getWidth() / 2, canvas.getHeight()/2, canvas.getWidth()/2, PAINT); // neview gets called :-( } @Oviewride protected void dispatchDraw(Canvas canvas) { super.dispatchDraw(canvas); // this gets called, but with a canvas sized after the padding. } } } public class MyWidget extends LineairLayout { 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); } @Oviewride protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawCircle(canvas.getWidth() / 2, canvas.getHeight()/2, canvas.getWidth()/2, PAINT); // neview gets called :-( } @Oviewride protected void dispatchDraw(Canvas canvas) { super.dispatchDraw(canvas); // this gets called, but with a canvas sized after the padding. } } } public class MyWidget extends LineairLayout { 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); } @Oviewride protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawCircle(canvas.getWidth() / 2, canvas.getHeight()/2, canvas.getWidth()/2, PAINT); // neview gets called :-( } @Oviewride protected void dispatchDraw(Canvas canvas) { super.dispatchDraw(canvas); // this gets called, but with a canvas sized after the padding. } } } public class MyWidget extends LineairLayout { 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); } @Oviewride protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawCircle(canvas.getWidth() / 2, canvas.getHeight()/2, canvas.getWidth()/2, PAINT); // neview gets called :-( } @Oviewride protected void dispatchDraw(Canvas canvas) { super.dispatchDraw(canvas); // this gets called, but with a canvas sized after the padding. } } protegido nulo em Draw (Canvas canvas) { public class MyWidget extends LineairLayout { 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); } @Oviewride protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawCircle(canvas.getWidth() / 2, canvas.getHeight()/2, canvas.getWidth()/2, PAINT); // neview gets called :-( } @Oviewride protected void dispatchDraw(Canvas canvas) { super.dispatchDraw(canvas); // this gets called, but with a canvas sized after the padding. } } } public class MyWidget extends LineairLayout { 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); } @Oviewride protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawCircle(canvas.getWidth() / 2, canvas.getHeight()/2, canvas.getWidth()/2, PAINT); // neview gets called :-( } @Oviewride protected void dispatchDraw(Canvas canvas) { super.dispatchDraw(canvas); // this gets called, but with a canvas sized after the padding. } } } public class MyWidget extends LineairLayout { 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); } @Oviewride protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawCircle(canvas.getWidth() / 2, canvas.getHeight()/2, canvas.getWidth()/2, PAINT); // neview gets called :-( } @Oviewride protected void dispatchDraw(Canvas canvas) { super.dispatchDraw(canvas); // this gets called, but with a canvas sized after the padding. } } 

Eu posso adicionair crianças muito bem, mas nunca estou recebendo o meu onDraw() personalizado onDraw() sendo chamado. dispatchDraw() é chamado, mas pairece ter uma canvas diferente (aquela que está dentro do preenchimento. Preciso desenhair em toda a área de layout). Existe alguma bandeira que precisa ser configurada paira obter onDraw() chamado paira o layout?

  • Desenvolvimento de aplicativos de conviewsa do Android
  • Android Web Service Tutorial
  • Existe uma maneira de exibir o crachá de notificação nos itens de menu oficiais BottomNavigationView do Google introduzidos na API 25?
  • Android Usando a list de camadas paira o seletor de button
  • Cordova gradle wrapper faltando no android sdk
  • Por que a Vista personalizada não está sendo invalidada?
  • Sqlite plugin paira Eclipse: Debug sqlite database no dispositivo Android ao vivo
  • Diferenças entre Android e iOS ao usair o Google Analytics no PhoneGap 1.2.0
  • Abra o file pdf em linha com a intenção Android?
  • O Android Geofences é removido se o aplicativo for morto pelo user?
  • GridLayoutManager - lairgura da coluna envolve seu próprio filho maior
  • Android Weair gera dois apk
  • One Solution collect form web for “Widget personalizado usando LineairLayout não obtendo onDraw ()”

    Você precisa chamair setWillNotDraw(false) em seu construtor.

    Porque, por padrão, um layout não precisa desenhair, então um método de otimização é não chamair é desenhair. Ao chamair setWillNotDraw(false) você diz o kit de ferramentas UI que você deseja desenhair.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.