我使用Flex SDK 4.5.1并使用Spark组件DropDownList。
我希望动态地将dropDown的宽度(不是dropdownList的按钮,只是单击按钮时打开的下拉列表本身)更改为固定大小(比如-140)。
我通过编写以下代码成功地做到了这一点:
<s:DropDownList
id="cSelector"
prompt=...
dataProvider=...
labelFunction="{ getOpLabel }"
open="{adjustWidth()}"
changing=...
/>
然而,在点击dropDownList后下拉列表并没有立即调整大小--我可以看到调整大小的过程有半秒钟。这个问题可以修复或者用不同的方式实现吗?怎么做?
一般来说,我更喜欢下拉菜单的大小由列表中最宽的项来调整,但这并没有发生,而且修复它似乎太复杂了。
注:编码只能在mxml文件中进行。
先谢谢你
编辑:
我还尝试做了以下几点:
<s:DropDownList
id="cSelector"
prompt=...
dataProvider=...
labelFunction="{ getOpLabel }"
creationComplete="{handleOpenEvent()}"
changing=...
/>
接着又道:
protected function handleOpenEvent():void
{
cSelector.addEventListener(DropDownEvent.OPEN, changeWidth);
}
protected function changeWidth(evt:Event):void
{
cSelector.dropDown.width = 135;
}
但是我还是每次打开下拉菜单都会看到快速的动画,第一次是最长的一次。
2条答案
按热度按时间ajsxfq5m1#
若要修改DropDownList中List的宽度,必须在打开处理程序中添加以下内容:
当我在测试这段代码时,我注意到第一次它做一个非常快的动画,随后的时间它只是以所需的宽度打开它。
3xiyfsfu2#
使用以下代码扩展DropdownList并使用此新的CustomDropdownList,您的问题将得到解决。无需设置宽度,它将采用最宽的项宽度。