Own defined Layout , onDraw() method not getting called

AndroidAndroid Layout

Android Problem Overview


I defined a class like that:

public class TestMyFrameLayout extends FrameLayout{

	Paint mPaint;
	public TestMyFrameLayout(Context context, AttributeSet attrs) {
		super(context, attrs);
	}

	public TestMyFrameLayout(Context context) {
		super(context);
		mPaint = new Paint();
		mPaint.setColor(Color.GREEN);
	}

	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		canvas.drawCircle(50f, 50f, 30, mPaint);
	}	
}

and called it like:

TestMyFrameLayout myFrameLayout = new TestMyFrameLayout(this);
LayoutParams myFrameLayoutParams = new LayoutParams(300,300);
myFrameLayout.setLayoutParams(myFrameLayoutParams);
setContentView(myFrameLayout);

But In fact TestMyFrameLayout.onDraw(Canvas canvas) function not getting called, why?

Android Solutions


Solution 1 - Android

Solved. Add this.setWillNotDraw(false); in constructor

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionold_houView Question on Stackoverflow
Solution 1 - Androidold_houView Answer on Stackoverflow