I am seeing the exact same thing. Does anyone have an answer to this?

On Friday, March 2, 2012 7:39:16 PM UTC-5, momo wrote:
>
> I've got a custom layout for positioning tooltips on a pan-n-zoom tiled 
> map (also custom), in reaction to touch events. The tooltips should appear 
> above and centered to the marker that fired it.
>
> Everything works perfectly when using normal Views (ImageView, TextView) 
> as children. However, when trying to use a ViewGroup (e.g., a 
> RelativeLayout), the child does not appear at all.
>
> I added some logging to onLayout, and it was reporting 0 for 
> child.getMeasuredWidth()/Height(), so I extended RelativeLayout and 
> overrode onMeasure in order to supply the correct dimensions. The 
> dimensions are now logging correctly, but still the child ViewGroup does 
> not appear. This doesn't seem like it's a necessary step in any case - I'd 
> expect to be able to use layouts as children normally.
>
> Why is there a difference? Why would a simple View appear and position 
> exactly as expected, but child layouts fail to render at all?
>
> Here's a summarized version of the custom layout:
>
> public class TooltipLayout extends ViewGroup {
>
>     public TooltipLayout(Context context) {
>         super(context);
>     }
>
>     @Override
>     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
>         //...
>     }
>
>     @Override
>     protected void onLayout(boolean changed, int l, int t, int r, int b) {
>         int count = getChildCount();
>         for (int i = 0; i < count; i++) {
>             View child = getChildAt(i);
>             if (child.getVisibility() != GONE) {
>                 TooltipLayout.LayoutParams lp = 
> (TooltipLayout.LayoutParams) child.getLayoutParams();
>                 child.layout(lp.x, lp.y, lp.x + child.getMeasuredWidth(), 
> lp.y + child.getMeasuredHeight());
>             }
>         }
>     }
>
>     public static class LayoutParams extends ViewGroup.LayoutParams {
>
>         public int x;
>         public int y;
>
>         public LayoutParams(int width, int height, int left, int top) {
>             super(width, height);
>             x = left;
>             y = top;
>         }
>     }
> }
>
> TYIA.
>

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to