重写List组件中的drawRowBackground方法:
package cn.com.common
{
import flash.display.Shape;
import flash.display.Sprite;
import mx.controls.List;
public class List_CD extends List
{
public function List_CD()
{
super();
}
override protected function drawRowBackground(s:Sprite, rowIndex:int, y:Number, height:Number, color:uint, dataIndex:int):void
{
super.drawRowBackground(s, rowIndex, y, height, color, dataIndex);
var bg:Shape=Shape(s.getChildAt(rowIndex));
//此外为了显示虚线~使用一个while来循环来模拟虚线效果~
var p:Number=0;
bg.graphics.lineStyle(1, 0xCCCCCC);
while (p < listContent.width)
{
bg.graphics.moveTo(p, height - 1);
bg.graphics.lineTo(p + 4, height - 1);
p+=6;
}
}
}
}
测试主程序:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="955"
minHeight="600"
xmlns:common="cn.com.common.*">
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<common:List_CD alternatingItemColors="0xFFFFFF"
rowHeight="25"
labelField="label"
left="10"
top="10"
right="10"
bottom="10">
<s:ArrayList>
<fx:Object label="路网指标一"
flag="net1"/>
<fx:Object label="路网指标二"
flag="net2"/>
<fx:Object label="线路指标一"
flag="line1"/>
<fx:Object label="线路指标二"
flag="line2"/>
<fx:Object label="车站指标一"
flag="sta1"/>
<fx:Object label="车站指标二"
flag="sta2"/>
</s:ArrayList>
</common:List_CD>
</s:Application>