如何在转发器项目上设置动态宽度百分比?

时间:2015-02-18 20:52:28

标签: actionscript-3 flex

我有一个使用对象数组作为数据提供者的转发器。对于每个对象,我想在容器内创建一个标签。即使标签太长而无法显示,每个容器的大小也应相同。

<mx:HBox width="100%">
    <mx:Repeater id="repeater" dataProvider="{objList}"> 
        <mx:Box width="11%" verticalAlign="middle" horizontalAlign="center">
            <mx:Label text="{repeater.currentItem.Text}" width="100%" textAlign="center" truncateToFit="true"/>
        </mx:Box>
    </mx:Repeater>
</mx:HBox>

如果我知道列表有9个项目,我可以将宽度设置为11%并且很开心。但我希望能够处理6-15项的清单。

我考虑过将框的宽度设置为函数的结果,但宽度不会接受字符串结果。返回一个数字只会将其设置为精确的宽度而不是百分比。

<mx:Box width="{GetPercent()}" verticalAlign="middle" horizontalAlign="center">

我还考虑在转发器项目上循环以设置percentWidth,但最好在渲染之前定义宽度。

2 个答案:

答案 0 :(得分:0)

使用Spark标签,您只需将每个标签设置为100%宽度并强制它自动截断,如下所示:<s:Label showTruncationTip="true" maxDisplayedLines="1" width="100%"/>。不确定它是否与MX标签组件相同。使用Spark组件,设置maxDisplayedLines以使截断正常工作也很重要。

答案 1 :(得分:0)

由于我没有火花,我最终通过用Canvas(将clipContent设置为true)替换Box来实现这一点。奇怪的是,我还必须从标签中删除width =“100%”(当然将horizo​​ntalCenter设置为0)。

<mx:Repeater id="repeater" dataProvider="{objList}"> 
    <mx:Canvas verticalScrollPolicy="off" horizontalScrollPolicy="off" clipContent="true">
        <mx:Label text="{repeater.currentItem.Text}" horizontalCenter="0" textAlign="center"/>
    </mx:Canvas>
</mx:Repeater>
相关问题