1

我在我的 flex 应用程序中使用 mx:DataGrid 组件。我显示这样的网格:

在此处输入图像描述

我想将选定的蓝色更改为透明。我正在使用以下代码:

<mx:DataGrid id="dg" dataProvider="{arrDg}" width="100%" height="100%" 
    draggableColumns="false" rowCount="{arrDg.length}" click="dgClickHandler(event)" 
    variableRowHeight="true" resizableColumns="false" sortableColumns="false" 
    selectionColor="#00000000" verticalScrollPolicy="off">

但这会将颜色更改为黑色而不是透明。

请帮忙。

4

2 回答 2

1

[编辑[

哎呀,没有注意到那个颜色有 8 个零。Flash 不支持 RGBA(或具有 alpha/透明度的颜色值)。

[结束编辑]

如果您不希望在选择时显示任何突出显示,请尝试将(mx)的可选择DataGrid属性设置为false. 似乎您有一个点击处理程序,关闭选择可能会阻止您的点击处理程序完成它的工作:(

如果您确实需要某种选择指示符,但想修改选择颜色的 alpha(透明度),则该样式设置不存在(即:没有“selectionAlpha”样式)。您必须创建一个自定义数据网格类来做到这一点。

于 2012-07-31T10:47:52.077 回答
0

如果您需要mx:DataGrid可选择的,但也希望选择颜色不影响您的单元格/行的颜色,您可以使用这种方法:

扩展DataGrid一个覆盖函数drawSelectionIndicator并将函数的内容留空(您可能也对覆盖drawHighlightIndicator函数感兴趣)

public class CustomRowColorDataGrid extends DataGrid
{
    public function CustomRowColorDataGrid()
    {
        super();
    }

    override protected function drawSelectionIndicator(indicator:Sprite, x:Number, y:Number, w:Number, h:Number, color:uint, itemRenderer:IListItemRenderer):void
    {
        //If you want a rectangle arround the selected row use call this method 
        //Rectangle(indicator,x,y,0xFF9900, 2,h) ;
    }

    override protected function drawHighlightIndicator(indicator:Sprite, x:Number, y:Number, w:Number, h:Number, color:uint, itemRenderer:IListItemRenderer):void
    {
        Rectangle(indicator,x,y,highlight, 2,h) ;
    }

    private function Rectangle(indicator:Sprite, xx:int, yy:int,colorBorde:uint,grosor:int, h:int):void
    {
        var g:Graphics ;
        var w:int ;

        w = this.width - this.verticalScrollBar.width-1 ;

        g = Sprite(indicator).graphics;
        g.clear();
        g.lineStyle(grosor,colorBorde) ;
        g.drawRect(0,1,w-grosor,h-grosor) ;

        indicator.x = xx;
        indicator.y = yy;
    }       
}
于 2014-03-05T14:57:09.207 回答