Flex动态更改树节点的高度
|
我想要一个树节点渲染器,其作用如下:
单击它可以更改节点高度。
我尝试如下:创建一个从UIComponent派生的自定义类
然后将其插入树节点渲染器中,但是由于某种原因,它无法按我预期的那样工作。
这是代码:
package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
import mx.controls.Tree;
import mx.core.UIComponent;
public class Expander extends UIComponent
{
public var expanded : Boolean = false;
public function Expander()
{
super();
this.redraw();
this.addEventListener( MouseEvent.CLICK, onClick );
}
private function redraw( newWidth : Number = 60, newHeight : Number = 20 ) : void
{
this.graphics.clear();
this.graphics.beginFill( 0x0000FF, 0.7 );
this.graphics.drawRect( 0, 0, newWidth, newHeight );
this.graphics.endFill();
}
private function onClick( e : MouseEvent ) : void
{
e.stopImmediatePropagation();
colapseExpand();
}
private function colapseExpand() : void
{
expanded = ! expanded;
if( expanded )
redraw( this.width, 100 );
else
redraw();
( parent as Tree ).invalidateSize();
}
}
}
这是渲染器类代码:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<s:MXTreeItemRenderer xmlns:fx=\"http://ns.adobe.com/mxml/2009\"
xmlns:s=\"library://ns.adobe.com/flex/spark\"
xmlns:mx=\"library://ns.adobe.com/flex/mx\"
xmlns:lx=\"*\">
<s:states>
<s:State name=\"normal\" />
<s:State name=\"hovered\" />
<s:State name=\"selected\" />
</s:states>
<s:HGroup left=\"0\" right=\"0\" top=\"0\" bottom=\"0\" verticalAlign=\"middle\">
<s:Rect id=\"indentationSpacer\" width=\"{treeListData.indent}\" percentHeight=\"100\" alpha=\"0\">
<s:fill>
<s:SolidColor color=\"0xFFAFFF\" />
</s:fill>
</s:Rect>
<s:Group id=\"disclosureGroup\">
<s:BitmapImage source=\"{treeListData.disclosureIcon}\" visible=\"{treeListData.hasChildren}\" />
</s:Group>
<s:BitmapImage source=\"{treeListData.icon}\" />
<s:Label id=\"labelField\" text=\"{treeListData.label}\" paddingTop=\"2\"/>
<lx:Expander width=\"100%\">
</lx:Expander>
</s:HGroup>
</s:MXTreeItemRenderer>
自定义类记为lx:Expander width=\"100%\"
。
没有找到相关结果
已邀请:
1 个回复
驮帽俺篮号
创建一棵树,然后在项目渲染器中使用状态来“扩展”项目渲染器:
当选择项目渲染器时,它应该会扩展,但是我没有对其进行测试。您的树可能需要具有属性'selectable = true \',否则您始终可以在项目渲染器的click事件中手动更改状态。