【问题标题】:Flex AdvancedDataGridFlex AdvancedDataGrid
【发布时间】:2011-07-08 19:54:18
【问题描述】:

我想为我的AdvancedDataGrid中的选定项目设置渐变背景

我该怎么做?

非常感谢 弗拉基米尔

【问题讨论】:

    标签: apache-flex advanceddatagrid


    【解决方案1】:

    您可以扩展 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,您可以将其保留为硬编码,或为其定义样式。

    【讨论】:

    • 很高兴听到这个消息。你能投票并接受答案吗? :)
    猜你喜欢
    • 2010-12-15
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 2011-04-13
    • 2012-09-12
    相关资源
    最近更新 更多