У меня есть компонент, содержащий список, реализующий настраиваемый рендерер. Я использую этот компонент как всплывающую подсказку, сохраняя один в памяти и просто изменяя привязки данных по мере необходимости.
Примерно так, где 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, компонент на мгновение отображает больше, чем нужно, а затем уменьшает свои размеры.
Я бы хотел, чтобы размер компонента изменялся до того, как он отображается, поэтому я не вижу изменения размера на экране. Есть идеи, как этого добиться?