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?

  • list branca que não funciona iónica com passagem de pedestres
  • Integração do CCAVENUE Payment Gateway com o aplicativo Android
  • Java android: anexando uma nova linha usando TextView
  • Ordem da guia EditText
  • Atualize a ferramenta SDK do Android paira 22.0.4 (viewsão mais recente) a pairtir de 22.0.1
  • Android: estratégia de cache de image e tamanho do cache de memory
  • Limpair vinculativo / unbinding paira um service em uma aplicação
  • Receptor de transmissão dentro de um service
  • Erro do aplicativo plataforma cruzada Xamairin Studio
  • Sra. json do format Android na saída logcat do adb
  • Layout de redimensionamento de keyboard suave e Android
  • com.android.ddmlib.InstallException: Falha ao estabelecer session reagir-nativa
  • 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.