Flex:自定义项目渲染器对于Combobox控件,截断文本
我已经实现了一个自定义项目渲染器,我正在使用我正在使用的Flex项目上的组合框。 它显示每个项目的图标和一些文字。 唯一的问题是,当文本很长时,菜单的宽度未被正确调整,并且文本在显示时被截断。 我试过调整所有显而易见的属性来缓解这个问题,但没有取得任何成功。 有谁知道如何使组合框的菜单宽度适当地缩放到它呈现的任何数据?
我的自定义项目渲染器实现是:
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml"
styleName="plain" horizontalScrollPolicy="off">
<mx:Image source="{data.icon}" />
<mx:Label text="{data.label}" fontSize="11" fontWeight="bold" truncateToFit="false"/>
</mx:HBox>
我的组合框就像这样使用它:
<mx:ComboBox id="quicklinksMenu" change="quicklinkHandler(quicklinksMenu.selectedItem.data);" click="event.stopImmediatePropagation();" itemRenderer="renderers.QuickLinkItemRenderer" width="100%"/>
编辑:我应该澄清的事情:我可以将组合框上的dropdownWidth属性设置为一些任意大的值 - 这将使一切合适,但它会太宽。 由于在此组合框中显示的数据是通用的,因此我希望它自动将自己的大小自动调整为数据提供者中最大的元素(flex文档说它会这样做,但我感觉我的自定义项呈示器以某种方式打破了该行为)
只是一个随机的想法(如果这会有帮助,不会有线索):
尝试将父级HBox和标签的宽度设置为100%。 这通常解决了我遇到的任何问题都是类似的。
你有没有尝试过使用calculatePreferredSizeFromData()方法?
protected override function calculatePreferredSizeFromData(count:int):Object
这个答案可能太晚了,但是我对DataGrid的列宽有一个非常类似的问题。
经过多次修改之后,我决定在一个私有的TextField中预渲染我的文本,从中获取渲染文本的宽度,并在所有适当的resize类型事件中明确设置列的宽度。 如果你没有太多变化的数据,那么有点黑客,但是工作得很好。
链接地址: http://www.djcxy.com/p/34569.html上一篇: Flex: Custom Item Renderer For Combobox controls truncates text