2012-01-16 82 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}" ... 

然後,當按鈕被按下時,遍歷列表(或數據網格?)的itemRenderer的,並更改渲染器的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是在錯誤的地方,你應該做出更好的制定問題。

相關問題