Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

I have created a custom view in android which extends View. I override the onDraw() method and do my painting to the canvas there - no problem.

I understand that I should override the onMeasure() method as well and call setMeasuredDimension(width, height) with my desired dimensions.

I notice that if I position breakpoints in my code, onMeasure() fires before onDraw().

Now my problem is that I don't know my view's desired height until onDraw has finished executing. My height starts off as a default value of 100 and then gets set at the end of onDraw - but onMeasure has already been executed before this so my View is only 100 px high.

How do I design my view so that it gets re-measured after onDraw() so that the height of my view can be determined dynamically?

share|improve this question

1 Answer 1

up vote 4 down vote accepted

Thanks to @njzk2 - the solution is to call this.requestLayout() inside your customview at the end of onDraw()

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.
{"cc_re__cc_re__cc_by_sa_3_0": ["                  <li><a href=\"//area51.stackexchange.com\" title=\"proposing new sites in the Stack Exchange network\">Area 51</a></li>\r\n                        <li><a href=\"//careers.stackoverflow.com\">Stack Overflow Careers</a></li>\r\n                    \r\n                </ol>\r\n            </td>\r\n    </tr>\r\n</table>\r\n                </div>\r\n            </div>\r\n\r\n            <div id=\"copyright\">\r\n                site design / logo &#169; 2015 stack exchange inc; user contributions licensed under <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\" rel=\"license\">cc by-sa 3.0</a> \r\n                with <a href=\"http://blog.stackoverflow.com/2009/06/attribution-required/\" rel=\"license\">attribution required</a>\r\n            </div>\r\n            <div id=\"svnrev\">\r\n                rev 2015.6.3.2630\r\n            </div>\r\n            \r\n        </div>\r\n    </div>\r\n    <noscript>\r\n        <div id=\"noscript-warning\">Stack Overflow works best with JavaScript enabled<img src=\"http://pixel.quantserve.com/pixel/p-c1rF4kxgLUzNc.gif\" alt=\"\" class=\"dno\"></div>\r\n    </nosc"], "copyright__copyright__copyright": [" it gets re-measured after onDraw() so that the height of my view can be determined dynamically?\n\nshare|improve this question\n\n1 Answer 1\n\nup vote 4 down vote accepted\n\nThanks to @njzk2 - the solution is to call this.requestLayout() inside your customview at the end of onDraw()\n\nshare|improve this answer\n\nYour Answer\n\n\u00a0\ndiscard\n\nBy posting your answer, you agree to the privacy policy and terms of service.\n\nNot the answer you're looking for? Browse other questions tagged or ask your own question."]}