Flex移动列表:如何摆脱渲染器点击上的灰色叠加?

时间:2012-03-15 23:06:03

标签: list itemrenderer flex-mobile

我尝试将所有可能的样式设置为灰色以外的其他样式,只是为了尝试去除灰色叠加层,如附加图像中的" Hello项目1" 所示列表没有任何效果。我也检查了ListSkin类,并没有任何可以绘制这些内容的鳍。如何摆脱这些叠加?

<s:List id="list" width="100%" height="100%"
            dataProvider="{dp}"
            focusAlpha="0"
            contentBackgroundAlpha="0"
            contentBackgroundColor="0xFFFFFF"
            selectionColor="0xFFFFFF"
            downColor="0xFFFFFF"
            borderVisible="false"
            >
</s:List>

Flex Mobile List

1 个答案:

答案 0 :(得分:1)

我刚刚用同样的事情帮助过一个客户。基本上,您必须扩展LabelItemRemderer类以不绘制矩形。它不会通过样式或颜色显示,您无法更改。

查看此代码(从LabelItemRemderer中的第853行开始):

// Selected and down states have a gradient overlay as well
// as different separators colors/alphas
if (selected || down)
{
    var colors:Array = [0x000000, 0x000000 ];
    var alphas:Array = [.2, .1];
    var ratios:Array = [0, 255];
    var matrix:Matrix = new Matrix();

    // gradient overlay
    matrix.createGradientBox(unscaledWidth, unscaledHeight, Math.PI / 2, 0, 0 );
    graphics.beginGradientFill(GradientType.LINEAR, colors, alphas, ratios, matrix);
    graphics.drawRect(0, 0, unscaledWidth, unscaledHeight);
    graphics.endFill();
}

您基本上需要某种方法来强制此代码不能运行。您可以通过从头创建自己的itemRenderer来完成此操作。或者你可以扩展LabelItemRenderer,覆盖drawBackground()方法并将所有父drawBackground()代码复制到扩展子代中;减去上面的块。

我喜欢把颜色看作是一种风格或什么。我很想看到一个神奇的属性(或风格),我们可以用来使覆盖完全消失。请将此作为错误记录到the Apache Flex Jira