如何在转发器项目上设置动态宽度百分比?
How do I set a dynamic width percentage on repeater items?
我有一个使用对象数组作为数据提供者的中继器。对于每个对象,我想在容器内创建一个标签。即使标签太长无法显示,每个容器的大小也应相同。
<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,但最好在渲染之前定义宽度。
使用 Spark 标签,您只需将每个标签设置为 100% 宽度并强制其自动截断,如下所示:<s:Label showTruncationTip="true" maxDisplayedLines="1" width="100%"/>
。不确定这是否适用于 MX 标签组件。对于 Spark 组件,设置 maxDisplayedLines
以使截断正常工作也很重要。
因为我没有 spark,所以我最终通过将 Box 替换为 Canvas(将 clipContent 设置为 true)来实现它。奇怪的是,我还必须从标签中删除 width="100%"(当然还要将 horizontalCenter 设置为 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>
我有一个使用对象数组作为数据提供者的中继器。对于每个对象,我想在容器内创建一个标签。即使标签太长无法显示,每个容器的大小也应相同。
<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,但最好在渲染之前定义宽度。
使用 Spark 标签,您只需将每个标签设置为 100% 宽度并强制其自动截断,如下所示:<s:Label showTruncationTip="true" maxDisplayedLines="1" width="100%"/>
。不确定这是否适用于 MX 标签组件。对于 Spark 组件,设置 maxDisplayedLines
以使截断正常工作也很重要。
因为我没有 spark,所以我最终通过将 Box 替换为 Canvas(将 clipContent 设置为 true)来实现它。奇怪的是,我还必须从标签中删除 width="100%"(当然还要将 horizontalCenter 设置为 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>