2012-01-16 1 views
0

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

вот мой 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 и изменить размер шрифта. Вы можете мне помочь?

ответ

0

Помещенный Привязываемое общественного вар внутри ItemRenderer, а затем привязать его к FONTSIZE как:

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

Затем при нажатии кнопки, перебираем itemrenderers из списка (или DataGrid?), А также изменить mypublicvar этого рендерер на новый значение, как:

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",... 
} 

BTW Я думаю, что ваш list_itemRendererFunc в неправильном месте, и вы должны сделать лучше сформулированный вопрос.