2012-01-16 42 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是在错误的地方,你应该做出更好的制定问题。

相关问题