我想在AdvancedDataGrid中为所选项目设置渐变背景
我该怎么做呢?
非常感谢弗拉基米尔
发布于 2011-03-04 23:41:03
您可以扩展AdvancedDataGrid,如下例所示:
import flash.display.GradientType;
import flash.display.Graphics;
import flash.display.Sprite;
import flash.geom.Matrix;
import mx.controls.AdvancedDataGrid;
import mx.controls.listClasses.IListItemRenderer;
import mx.core.mx_internal;
use namespace mx_internal;
public class CustomAdvancedDataGrid extends AdvancedDataGrid
{
public var secondaryColor : uint = 0xFFFFFF;
protected override function drawSelectionIndicator(
indicator:Sprite, x:Number, y:Number,
width:Number, height:Number, color:uint,
itemRenderer:IListItemRenderer) : void
{
if (isRowSelectionMode())
width = unscaledWidth - viewMetrics.left - viewMetrics.right;
var mat : Matrix = new Matrix();
mat.createGradientBox(width,height,-90*Math.PI/180);
var g:Graphics = Sprite(indicator).graphics;
g.clear();
g.beginGradientFill(GradientType.LINEAR, [color, secondaryColor], [1, 1], [0, 255], mat);
g.drawRect(0, 0, width, height);
g.endFill();
indicator.x = x;
indicator.y = y;
}
}
您可以考虑覆盖的其他函数有: drawHighlightIndicator和drawCaretIndicator (它们具有相同的结构)。至于secondaryColor,您可以将其保留为硬编码,或者为其定义一个样式。
https://stackoverflow.com/questions/5194206
复制相似问题