0

我尝试将所有可能的样式设置为灰色以外的样式,只是为了尝试摆脱灰色叠加层,如所附列表图像中的“Hello item 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 移动列表

4

1 回答 1

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() 代码复制到扩展子中;减去上面的块。

我很想看到这种颜色作为一种风格或其他东西暴露出来。我很想看到一个神奇的属性(或样式),我们可以用它来使覆盖层完全消失。随时将此作为错误记录到Apache Flex Jira中。

于 2012-04-06T14:51:55.317 回答