Как я могу динамически изменить компонент в визуализации элементов? - PullRequest
0 голосов
/ 16 января 2012

как я могу динамически изменять размер текста компонентов в элементе рендерера?

вот мой CustomItemRenderer.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                xmlns:s="library://ns.adobe.com/flex/spark">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>

    <fx:Script>
        <![CDATA[
            override public function set data(value:Object):void
            {
                super.data = value;

                invalidateDisplayList();
            }

            private function list_itemRendererFunc(item:Object):void {
                textArea2.setStyle("fontSize",
                                textArea2.getStyle("fontSize") + 2);    
        ]]>
    </fx:Script>
    <s:Label left="10" right="10" top="10" height="25" fontSize="14" maxDisplayedLines="1"
             text="{data.title}" textAlign="center"/>

    <s:TextArea id="textArea2" left="10" right="10" top="35" bottom="10" editable="false"
                fontSize="12" skinClass="spark.skins.mobile.TextAreaSkin"
                text="{data.description }"/>
</s:ItemRenderer>

при нажатии кнопки я хочу получить доступ к textArea2 и изменить размер шрифта. Вы можете мне помочь?

1 Ответ

0 голосов
/ 18 января 2012

Поместите привязываемый публичный var в itemrenderer, затем привяжите его к fontSize, например:

<s:TextArea id="textArea2" fontSize="{mypublicvar}" ...

Затем, когда нажата кнопка, переберитеменю обработчиков элементов списка (или сетки данных?) И измените mypublicvar этого средства визуализации на aновое значение, например:

for(var i:int = 0; i < list.dataGroup.numElements; i++)
{
   var itemRendererItem:CustomItemRenderer = list.dataGroup.getElementAt(i) as CustomItemRenderer;
   itemRendererItem.mypublicvar += 2;

   //you can also try
   itemRendererItem.textArea2.setStyle("fontSize",...
}

Кстати, я думаю, что ваш list_itemRendererFunc находится не в том месте, и вам следует сформулировать вопрос лучше.

...