【问题标题】:Disable roll-over color for List or DataGrid components禁用 List 或 DataGrid 组件的翻转颜色
【发布时间】:2011-01-20 11:18:36
【问题描述】:

我想摆脱基于列表的组件中典型的 Flex 翻转颜色,并显示我自己的翻转渲染风格。

将 useRollOver 设置为“false”不是一个选项,因为禁用它也会使 List.isItemHighlighted() 函数始终返回 false。我的自定义渲染器依赖于该函数。

有这么难吗?有没有办法将翻转颜色设置为透明?是否有其他方法可以让我的渲染器确定某个项目是否突出显示?

谢谢!

编辑:当然,我可以将 rollOver 颜色设置为“白色”,并将 alteringRowColors 设置为类似于白色的颜色。有点作弊:)

【问题讨论】:

    标签: apache-flex itemrenderer rollover


    【解决方案1】:

    通过在自定义 ItemRenderer 中将“autoDrawBackground”属性设置为“false”,您可以禁用默认的悬停和选定背景颜色,然后在需要时在渲染器中设置它们。

    这只是 spark 列表选项。 MX 控件没有。

    【讨论】:

    • 很酷,我只是想以最小的方式将其关闭,这就成功了
    【解决方案2】:

    @invertedSpear,感谢您的提示。

    它确实有效!我的意思是,子类化,而不是编辑 SDK,还没有尝试过。但是您可以做的是为 List、DataGrid 等(甚至 AdvancedDataGrid)创建一个子类并添加以下函数:

    override protected function drawHighlightIndicator(indicator:Sprite, x:Number, y:Number, width:Number,
        height:Number, color:uint, itemRenderer:IListItemRenderer):void
    {
        // get style -- is this the right place?
        var alpha:Number = this.getStyle("rollOverAlpha");
        if (isNaN(alpha))
            alpha = 1.0;
    
        // no need to draw if alpha 0
        if (alpha <= 0)
            return;
    
        // draw -- this has been copied from superclass, and the alpha parameter added to beginFill()
        var g:Graphics = Sprite(indicator).graphics;
        g.clear();
        g.beginFill(color, alpha);
        g.drawRect(0, 0, width, height);
        g.endFill();
    
        indicator.x = x;
        indicator.y = y;
    }
    

    现在,如果您向该类添加样式声明,您就可以滚动了:

    [Style(name="rollOverAlpha", type="Number", inherit="no")]
    public class DataGridExt extends DataGrid
    {
        ...
    }
    

    在 SDK 中更改它当然是更好的选择,因为您只需要接触两个类:ListBase 和 AdvancedListBase。我会检查 Adob​​e Jira 问题。

    【讨论】:

    • 说实话,我没有研究受保护的函数。很高兴这比我想象的要容易。
    【解决方案3】:

    有一种方法可以做到这一点,但这并不好玩。您可以编辑 SDK 本身(开源是耶)。您可以进入那里,找到设置突出显示颜色的位置并开始添加代码以生成突出显示的 alpha 的公共属性。我会先备份你的 SDK,因为有可能完全搞砸。

    看起来翻转代码在 ListBase 类中,所以我会制作该类的副本或扩展,并将翻转 alpha 的代码添加到该类中。然后我会复制从这个新的 ListBase 继承的 List 类。

    祝我的朋友好运,如果你成功了,请与全世界分享你的新课程,因为我相信其他人可能也想做同样的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-22
      • 2023-03-08
      • 2012-02-06
      • 2017-11-15
      相关资源
      最近更新 更多