组从原始图像获取高度,而不是缩放图像

时间:2013-06-24 13:35:12

标签: image actionscript-3 flex flash-builder

在我的应用中,我导入了Twitter时间线。有些推文包含图片,有些则没有。 imqages的高度也是变量。我有90%的设置宽度以确保图像适合组(具有垂直布局),但无论我做什么,组都会从原始图像获得高度,而不是缩放高度。我尝试设置variableRowHeight =“true”,但似乎没有做任何事情。这是一些示例代码:

<s:List id="list" y="0" width="90%" height="954" dataProvider="{tweets}" horizontalCenter="0">
    <s:layout>
        <s:VerticalLayout/>
    </s:layout>
    <s:itemRenderer>
        <fx:Component>
            <s:ItemRenderer>
                <s:Group width="100%">
                <s:Label id="twitlabel" text="{tweetImage.height}"
                             width="100%"
                             styleName="tweetlist"/>
                    <s:Image id="tweetImage" y="{twitlabel.height}" width="90%" horizontalCenter="0" scaleMode="letterbox" smooth="true" source="{data.entities.media[0].media_url}"/>
                </s:Group>
            </s:ItemRenderer>
        </fx:Component>
    </s:itemRenderer>

问题是,如何让小组将其高度设置为缩放的图像高度?

1 个答案:

答案 0 :(得分:0)

首先为您的图片设置“完整”事件处理程序,并为您的组设置ID:

 <s:Group id="tweetImageGroup" width="100%">
 <s:Image id="tweetImage" y="{twitlabel.height}" horizontalCenter="0" scaleMode="letterbox" smooth="true" source="{data.entities.media[0].media_url}" complete="tweetImage_completeHandler(event)"/>

然后在图像加载完成后设置宽度:

protected function tweetImage_completeHandler(event:Event):void{
   tweetImageGroup.height = event.currentTarget.measuredHeight;
}

这可能需要一些调整,但如果我正确理解你的问题就应该有效。