May 31
接下来的例子演示了Flex中通过自定义Accordion容器头部,来阻止用户点击Accordion容器头部。例子中使用MyAccHeader中将mouseEnabled属性设置为flash来自定义头部,从而阻止用户点击Accordion容器头部。用户可以点击next和previous来切换选中的accordion子项。
让我们先来看一下Demo(可以右键View Source或点击这里察看源代码):
下面是完整代码(或点击这里查看):
Download: main.mxml
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
- layout="vertical"
- verticalAlign="middle"
- backgroundColor="white">
- <mx:Script>
- <![CDATA[
- private function prevChild():void {
- accordion.selectedIndex--;
- }
- private function nextChild():void {
- accordion.selectedIndex++;
- }
- ]]>
- </mx:Script>
- <mx:Accordion id="accordion"
- headerRenderer="comps.MyAccHeader"
- width="100%" height="100%">
- <mx:VBox id="v1" label="One" width="100%" height="100%">
- <mx:VBox width="100%" height="100%">
- <mx:Label text="One" />
- </mx:VBox>
- <mx:ControlBar horizontalAlign="right" width="100%">
- <mx:Spacer width="100%" />
- <mx:Button label="next" click="nextChild();" />
- </mx:ControlBar>
- </mx:VBox>
- <mx:VBox id="v2" label="Two" width="100%" height="100%">
- <mx:VBox width="100%" height="100%">
- <mx:Label text="Two" />
- </mx:VBox>
- <mx:ControlBar width="100%">
- <mx:Button label="prev" click="prevChild();" />
- <mx:Spacer width="100%" />
- <mx:Button label="next" click="nextChild();" />
- </mx:ControlBar>
- </mx:VBox>
- <mx:VBox id="v3" label="Three" width="100%" height="100%">
- <mx:VBox width="100%" height="100%">
- <mx:Label text="Three" />
- </mx:VBox>
- <mx:ControlBar width="100%">
- <mx:Button label="prev" click="prevChild();" />
- <mx:Spacer width="100%" />
- <mx:Button label="next" click="nextChild();" />
- </mx:ControlBar>
- </mx:VBox>
- <mx:VBox id="v4" label="Four" width="100%" height="100%">
- <mx:VBox width="100%" height="100%">
- <mx:Label text="Four" />
- </mx:VBox>
- <mx:ControlBar width="100%">
- <mx:Button label="prev" click="prevChild();" />
- <mx:Spacer width="100%" />
- <mx:Button label="next" click="nextChild();" />
- </mx:ControlBar>
- </mx:VBox>
- <mx:VBox id="v5" label="Five" width="100%" height="100%">
- <mx:VBox width="100%" height="100%">
- <mx:Label text="Five" />
- </mx:VBox>
- <mx:ControlBar width="100%">
- <mx:Button label="prev" click="prevChild();" />
- <mx:Spacer width="100%" />
- </mx:ControlBar>
- </mx:VBox>
- </mx:Accordion>
- </mx:Application>
下面就是自定义头部代码:
Download: MyAccHeader.as
- package comps {
- import mx.containers.accordionClasses.AccordionHeader;
- public class MyAccHeader extends AccordionHeader {
- public function MyAccHeader() {
- super();
- mouseEnabled = false;
- }
- }
- }
代码:Peter deHaan 翻译/整理/编译:minidxer
