Spark List:使用扩展列表itemRenderer的ensureIndexIsVisible

时间:2014-11-17 19:36:16

标签: actionscript-3 flex

我有一个Spark List,其中包含一个展开的itemRenderer(下面的代码片段)。它工作得很好,但在调用ensureIndexIsVisible时,我很难显示完全展开的列表项。我尝试使用validate / invalidate尝试各种各样的事情,试图强制List考虑扩展的项目大小,但是我做错了或者List组件没有构建来处理这个问题

在下面的图片中,我调用myList.ensureIndexIsVisible(7);项目7已展开,页眉滚动显示,但大部分展开的项目都在屏幕外。

任何人都知道解决这个问题的方法吗?

更新:如果List被指定为useVirtualLayout =“false”,则以下内容有效:

   myList.validateNow();
   myList.ensureIndexIsVisible(expandIndex);

但当然如果List实例中有很多单元格,那么这是一个问题。


enter image description here

        protected function expandOne_clickHandler(event:MouseEvent):void
        {
            var expandIndex:Number = Number(expandTarget.text);
            data.getItemAt(expandIndex).selected = true;
            myList.invalidateDisplayList();
            myList.ensureIndexIsVisible(expandIndex);
            myList.validateNow();
        }

列出itemRenderer:

    <s:CheckBox id="eventName" 
            label="{data.eventName}" 
            top="0" left="0" right="0" bottom="0" 
            skinClass="skins.SatelliteEventSkin" 
            selected="{data.selected}"
            click="{data.selected = !data.selected}"/>

    <s:VGroup includeInLayout="{eventName.selected}" 
          visible="{eventName.selected}" 
          top="30" left="10" right="10" bottom="10">

    <s:HGroup verticalAlign="middle" width="100%" >
        <s:Spacer width="100%"/>
        <s:Label  text="eventID"/>
        <s:Label id="eventID" 
                 width="150"
                 text="{data.eventID}"/>
    </s:HGroup> 

    etc...

1 个答案:

答案 0 :(得分:0)

尝试设置 selectedIndex 值,或者只使用 verticalScrollPosition 值 - myList.layout.verticalScrollPosition += your_item_height;滚动列表。