So in my onMeasure routine I need to enumerate the children, compute
their new size and call each child's 'measure' function?  If so, is
there somewhere that describes how I create the parameters for that
call?

Thanks.

On Sep 26, 9:53 am, Romain Guy <romain...@android.com> wrote:
> If you change the size of a child, you need to measure it with that size 
> first.
>
>
>
> On Sun, Sep 26, 2010 at 7:38 AM, John Gaby <jg...@gabysoft.com> wrote:
> > I have a custom ViewGroup.  The idea is to be able to place controls
> > at absolute positions and then have the ViewGroup scale those controls
> > based on the difference in the screen dimensions with respect to the
> > original  design dimensions.  I am using the code below.  In response
> > to the 'onMeasure' message, I am storing the width and height of the
> > view.  Then on the 'onLayout' message I am computing new dimensions
> > for the child controls and adjusting their sizes proportionally.  This
> > all works to some degree.  However for certain controls (e.g. button
> > controls), the control resizes, but the text inside does not remain
> > centered within the control.  I am thinking that there is some other
> > call I need to make to update the child controls after I change their
> > size.
>
> > Any suggestions?
>
> > Thanks
>
> > @Override
> > protected void onMeasure(int wid, int hgt)
> > {
> >    super.onMeasure(wid, hgt);
>
> >    m_viewWidth  = getMeasuredWidth();
> >    m_viewHeight = getMeasuredHeight();
>
> >    measureChildren(wid, hgt);
> > }
>
> > @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)
> >        {
> >            GViewGroup.LayoutParams lp = (GViewGroup.LayoutParams)
> > child.getLayoutParams();
>
> >            int wid = child.getMeasuredWidth();
> >            int hgt = child.getMeasuredHeight();
> >            int lx = lp.x;
> >            int ly = lp.y;
> >            int ux = lp.x + wid;
> >            int uy = lp.y + hgt;
>
> >            if ((m_designWidth != 0) && (m_designHeight != 0) &&
> > (m_viewWidth != 0) && (m_viewHeight != 0))
> >            {
> >             lx = (lx * m_viewWidth) / m_designWidth;
> >             ux = (ux * m_viewWidth) / m_designWidth;
> >             ly = (ly * m_viewHeight) / m_designHeight;
> >             uy = (uy * m_viewHeight) / m_designHeight;
> >            }
>
> >            child.layout(lx, ly, ux, uy);
> >        }
> >    }
> > }
>
> > --
> > You received this message because you are subscribed to the Google
> > Groups "Android Developers" group.
> > To post to this group, send email to android-developers@googlegroups.com
> > To unsubscribe from this group, send email to
> > android-developers+unsubscr...@googlegroups.com
> > For more options, visit this group at
> >http://groups.google.com/group/android-developers?hl=en
>
> --
> Romain Guy
> Android framework engineer
> romain...@android.com
>
> Note: please don't send private questions to me, as I don't have time
> to provide private support.  All such questions should be posted on
> public forums, where I and others can see and answer them

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

Reply via email to