I have made a custom View with onDraw() overridden that draws a bitmap on the canvas. When I specify that I want it wrap_content in the layout file it still fills up the entire screen. onMeasure() says this:
The base class implementation of measure defaults to the background size, unless a larger size is allowed by the
MeasureSpec. Subclasses should override onMeasure(int, int) to provide better measurements of their content.
Ok cool so I know I need to override onMeasure() and work with MeasureSpec. According to this answer
UNSPECIFIED means the layout_width or layout_height value was set to wrap_content. You can be whatever size you would like.
Now I get to my problem, how do I at onMeasure() measure my bitmap that is not created yet and measure/wrap it? I know the other Android views MUST do something because they do not block out the entire screen if set to wrap_content. Thanks in advance!
If you can’t measure the bitmap prior to the onMeasure call, then you could return a size of zero until the Bitmap is loaded. Once it is loaded, invalidate the parent ViewGroup to force another measure (can’t remember if invalidate() on the View itself will force an onMeasure).