2

我想从 xml 文件填充一个水平列表组件,宽度值将在 xml 文件内以及所有数据。

实际上我有这个代码:

<mx:Model id="epg" source="epg.xml" /> 

<mx:Component id="customRend">
    <mx:Label text="{data.description}" width="{data.width}"/> 
</mx:Component>

<mx:HBox x="82" y="104" width="1203" height="113" verticalAlign="middle">
    <mx:HorizontalList width="100%"  dataProvider="{epg.channel.program}" 
        itemRenderer="{customRend}" horizontalScrollPolicy="off">
    </mx:HorizontalList> 
</mx:HBox>

但它为列表中的所有元素设置相同的宽度。

你知道怎么做吗?

非常感谢。溴

4

1 回答 1

0

有两种方法可以做到这一点:

  • 开启label.width = data.width_creationComplete
  • 在画布中包裹标签

creationComplete 方式(可能是因为 itemRenderer 应该是 Container?):

<mx:HorizontalList width="100%" dataProvider="{epg.channel.program}"  horizontalScrollPolicy="off">
    <mx:itemRenderer>
        <mx:Component id="customRend">
            <mx:Label text="{data.description}" creationComplete="this.width = data.width"/> 
        </mx:Component>
    </mx:itemRenderer>
</mx:HorizontalList>

...或包裹在画布中:

<mx:HorizontalList width="100%" dataProvider="{epg.channel.program}"  horizontalScrollPolicy="off">
    <mx:itemRenderer>
        <mx:Component id="customRend">
            <mx:Canvas horizontalScrollPolicy="off">
                <mx:Label text="{data.description}" width="{data.width}"/> 
            </mx:Canvas>
        </mx:Component>
    </mx:itemRenderer>
</mx:HorizontalList>

希望有帮助,兰斯

于 2010-02-25T11:27:56.577 回答