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