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 flexcoders@yahoogroups.com, "Tim Hoff" <timh...@...> 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 flexcoders@yahoogroups.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: flexcoders@yahoogroups.com [mailto:flexcod...@yahoogroups.com]
> On
> > Behalf Of wubac1
> > Sent: Saturday, April 18, 2009 2:02 AM
> > To: flexcoders@yahoogroups.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.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)?
> >
>


Reply via email to