自定义TileList, override drawSelectionIndicator和drawHighlightIndicator就可以了
<?xml version="1.0"?>
<!-- dpcontrols/TileListDataProvider.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
initialize="initData();" xmlns:local="*">
<mx:Script>
<![CDATA[
import mx.controls.Button;
import mx.collections.*;
private var listArray:Array=[
{label: "item0", data: 0},{label: "item1", data: 1},
{label: "item2", data: 2},{label: "item3", data: 3},
{label: "item4", data: 4},{label: "item5", data: 5},
{label: "item6", data: 6},{label: "item7", data: 7},
{label: "item8", data: 8}];
[Bindable]
public var TileListdp:ArrayCollection;
private function initData():void {
TileListdp = new ArrayCollection(listArray);
}
]]>
</mx:Script>
<local:CustomTileList dataProvider="{TileListdp}"
rowHeight="120" columnWidth="120" >
<local:itemRenderer>
<mx:Component>
<mx:HBox
horizontalAlign="center" >
<mx:Canvas width="100" height="100" borderStyle="solid">
</mx:Canvas>
</mx:HBox>
</mx:Component>
</local:itemRenderer>
</local:CustomTileList>
</mx:Application>
package
{
import flash.display.Graphics;
import flash.display.Sprite;
import mx.controls.TileList;
import mx.controls.listClasses.IListItemRenderer;
public class CustomTileList extends TileList
{
override protected function drawSelectionIndicator(
indicator:Sprite, x:Number, y:Number,
width:Number, height:Number, color:uint,
itemRenderer:IListItemRenderer):void
{
var g:Graphics = Sprite(indicator).graphics;
g.clear();
g.beginFill(color);
g.drawRect(10, 10, width-20, height-20);
g.endFill();
indicator.x = x;
indicator.y = y;
}
override protected function drawHighlightIndicator(
indicator:Sprite, x:Number, y:Number,
width:Number, height:Number, color:uint,
itemRenderer:IListItemRenderer):void
{
var g:Graphics = Sprite(indicator).graphics;
g.clear();
g.beginFill(color);
g.drawRect(10, 10, width-20, height-20);
g.endFill();
indicator.x = x;
indicator.y = y;
}
}
}