У меня есть компонент, который содержит список, который реализует пользовательский рендерер. Я использую этот компонент в качестве всплывающей подсказки, сохраняя его в памяти и просто изменяя привязки данных по мере необходимости.
Примерно так: TTComponent - это класс, расширяющий Canvas:
<s:TTComponent>
<s:BorderContainer>
<s:List id='lstItems' dataProvider="{data.Items}" width="50%" borderVisible="false" contentBackgroundColor="#222222">
<s:layout>
<s:VerticalLayout useVirtualLayout="false" requestedMinRowCount="1"/>
</s:layout>
<s:itemRenderer>
<fx:Component>
<s:ItemRenderer>
<s:HGroup>
<s:Label text="{data.Value}" paddingLeft="6" />
<s:Label text="{data.Name}" />
</s:HGroup>
</s:ItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:List>
</s:BorderContainer>
</s:TTComponent>
Теперь код драйвера выглядит следующим образом:
if (tt == null) {
tt = new TTComponent();
}
tt.data = data;
PopUpManager.addPopUp(tt, this);
И, конечно же, мышь вышла:
PopUpManager.removePopUp(tt);
Теперь, что происходит, когда для данных, содержащих много элементов, задано значение tt.data, список масштабируется больше и отображается нормально. Однако после этого, если для данных, содержащих несколько элементов, задано значение tt.data, компонент мгновенно отображает больше, чем нужно, а затем изменяет свой размер на меньший.
Что я хотел бы сделать - это изменить размер компонента до его отображения, поэтому я не вижу изменения размера на экране. Есть идеи, как этого добиться?