我有一个Spark List,其中包含一个展开的itemRenderer(下面的代码片段)。它工作得很好,但在调用ensureIndexIsVisible
时,我很难显示完全展开的列表项。我尝试使用validate / invalidate尝试各种各样的事情,试图强制List
考虑扩展的项目大小,但是我做错了或者List
组件没有构建来处理这个问题
在下面的图片中,我调用myList.ensureIndexIsVisible(7);
项目7已展开,页眉滚动显示,但大部分展开的项目都在屏幕外。
任何人都知道解决这个问题的方法吗?
更新:如果List
被指定为useVirtualLayout =“false”,则以下内容有效:
myList.validateNow();
myList.ensureIndexIsVisible(expandIndex);
但当然如果List实例中有很多单元格,那么这是一个问题。
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...
答案 0 :(得分:0)
尝试设置 selectedIndex 值,或者只使用 verticalScrollPosition 值 - myList.layout.verticalScrollPosition += your_item_height;
滚动列表。