Well, there is magic in ActionScript. MXML doesn't have the item renderer mojo.
-W --- In flexcoders@yahoogroups.com, "Tim Hoff" <timh...@...> wrote: > > > Yep, no magic here. :) > > -TH > > --- In flexcoders@yahoogroups.com, "Tracy Spratt" <tracy@> wrote: > > > > Hah, Tim, your spell didn't quite do it, huh? ;) Container-based > renderers > > are problematic. For anything even slightly complex, extend > UIComponent. > > > > > > > > I copy ListItemRenderer, it is a great starting point. It is pretty > easy to > > see where to add your special incantations. > > > > > > > > Tracy Spratt, > > > > Lariat Services, development services available > > > > _____ > > > > From: flexcoders@yahoogroups.com [mailto:flexcod...@yahoogroups.com] > On > > Behalf Of Tim Hoff > > Sent: Saturday, April 18, 2009 5:27 PM > > To: flexcoders@yahoogroups.com > > Subject: [flexcoders] Re: Custom List ItemRenderer / Recycling > troubles > > (height incorrect) > > > > > > > > > > > > > > > > > > > > Hi, > > > > Yes, after playing with it a little, you're correct; my suggestion > only > > works in AS. Sorry, I always extend UIComponent for itemRenderers that > > need to have a variableRowHeight. > > > > BTW, in the future, please sign your posts; so that we can put a name > to > > your warm and positive comments. > > > > -TH > > > > --- In flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com> > ups.com, > > "wubac1" wubac1@ wrote: > > > > > > Tim, I have been using the variableRowHeight (see my original > > example). Also, one should not need to replicate the measure of > mx:Text. > > Your example disregards internal padding elements of the Text > component. > > I did try setActualSize combined with getExplicitOrMeasuredHeight, but > > that only works in ActionScript. I encourage you to try and create a > > functional example. I'm fairly confident at this point that you will > not > > get one working in MXML with mx:Text (multi-line). > > > > > > I was able to get a fully functional item renderer based on > > ListItemRenderer, which uses UITextField. However, in theory, one > should > > be able to do it in MXML. With that in mind, I replaced the > UITextField > > of my ActionScript-based renderer with mx:Text. It's probably not > > surprising to many that the renderer no longer behaves as expected. > The > > height issue appears to be tied to the component in some fashion > > (mx:Text in this case). I'd file a defect but I haven't seen much ROI > in > > such reports. > > > > > > --- In flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com> > ups.com, > > "Tim Hoff" TimHoff@ wrote: > > > > > > > > > > > > Hi, > > > > > > > > Set the List's variableRowHeight="true" and use something like > this > > in > > > > the itemRenderer: > > > > > > > > override protected function measure():void > > > > { > > > > var textLineMetrics:TextLineMetrics = comment.measureText( > > > > comment.text ); > > > > > > > > // should add paddingTop, paddingBottom and verticalGap to this > too > > > > measuredHeight = textLineMetrics.height + myLinkButton.height; > > > > } > > > > > > > > -TH > > > > > > > > --- In flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com> > > ups.com, "Tracy Spratt" <tracy@> wrote: > > > > > > > > > > Sorry, no magic sauce here. I had some pixie dust somewhere, > but. > > Was > > > > it > > > > > Asimov or Clark that said, "Any sufficiently advanced technology > > is > > > > > indistinguishable from magic"? > > > > > > > > > > > > > > > > > > > > When I needed a variable height renderer, I copied > > ListItemRenderer > > > > and > > > > > modified to my needs. That was the only way I could get it to > > work. It > > > > is > > > > > also *much* more performant than a container based renderer. The > > magic > > > > is > > > > > indeed in the measure() function. > > > > > > > > > > > > > > > > > > > > If you do not have a lot of items to renderer, Repeater works > well > > > > with > > > > > variable heights. > > > > > > > > > > > > > > > > > > > > Tracy Spratt, > > > > > > > > > > Lariat Services, development services available > > > > > > > > > > _____ > > > > > > > > > > From: flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com> > > ups.com > > [mailto:flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com> > ups.com] > > > > On > > > > > Behalf Of wubac1 > > > > > Sent: Saturday, April 18, 2009 2:02 AM > > > > > To: flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com> > ups.com > > > > > Subject: [flexcoders] Custom List ItemRenderer / Recycling > > troubles > > > > (height > > > > > incorrect) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I'm attempting to create a very simple item renderer for > mx:List. > > I've > > > > found > > > > > that when the dataProvider is static, there are no problems with > > the > > > > custom > > > > > item > > > > > renderer. However, when the dataProvider is dynamic, the height > of > > the > > > > item > > > > > renderer is not correct (and scroll bars appear for each > renderer > > with > > > > any > > > > > meaningful # of rows). I've set variableRowHeight="true" for the > > List. > > > > I've > > > > > also tried overriding the measure function and invaliding the > size > > > > when a > > > > > dataChange event is dispatched (based on information provided on > > > > FlexCoders > > > > > in previous discussions along these lines). > > > > > > > > > > CommentRenderer.mxml: > > > > > > > > > > <?xml version="1.0" encoding="utf-8"?> > > > > > <mx:VBox xmlns:mx="http://www.adobe. > > <http://www.adobe. <http://www.adobe.com/2006/mxml> com/2006/mxml> > > > > > com/2006/mxml" width="100%"> > > > > > <mx:Script> > > > > > <![CDATA[ > > > > > override protected function measure():void > > > > > { > > > > > super.measure(); > > > > > measuredHeight = comment.textHeight; > > > > > } > > > > > ]]> > > > > > </mx:Script> > > > > > <mx:LinkButton label="{data.commenter.name}"/> > > > > > <mx:Text id="comment" width="100%" text="{data.comment}" > > > > > dataChange="invalidateSize()"/> > > > > > </mx:VBox> > > > > > > > > > > The mx:List definition: > > > > > > > > > > <mx:List id="comments" itemRenderer="com.test.CommentRenderer" > > > > width="100%" > > > > > height="100%"/> > > > > > > > > > > I've looked over the ListItemRenderer, but have so far been > unable > > to > > > > glean > > > > > the > > > > > magic sauce that makes the item renderer function correctly when > > the > > > > control > > > > > recycles. Can someone explain / provide a functional example(s) > > with > > > > mx:Text > > > > > (ActionScript and MXML examples preferred, for completeness)? > > > > > > > > > > > > > > >