在项呈示器内滚动结果为空项

时间:2012-05-03 09:53:25

标签: flex mobile scroll itemrenderer

我正在开发一款移动应用。我有一个带有水平列表的视图,每个项目都有很长的描述,所以我需要一个垂直滚动来获取该独立信息。我正在尝试添加一个滚动作为itemRenderer的Child。我不明白。谁知道我做得不好? 我有一个继承ItemRenderer的类(我也尝试过AsFusion的BaseRenderer,它似乎有更多的移动应用程序性能,结果相同)。 这是我的代码中滚动的一部分:

    override protected function createChildren():void
    {
        super.createChildren();
        scroller = new VScrollBar();
        scroller.percentHeight = 100;
        scroller.setStyle('right', 0);
        scrollGroup = new Group();
        scrollGroup.percentHeight = 100;
        scrollGroup.percentWidth = 100;
        super.addElement(scroller);
        super.addElement(scrollGroup);

        scroller.viewport = scrollGroup;
    }

我也试过

    override protected function createChildren():void
    {
        super.createChildren();
        scroller = new Scroller();
        scroller.percentHeight = 100;
        scroller.percentWidth = 100;
        scrollGroup = new Group();
        scrollGroup.percentHeight = 100;
        scrollGroup.percentWidth = 100;
        super.addElement(scroller);
        super.addElement(scrollGroup);

        scroller.viewport = scrollGroup;
    }

结果是一样的。列表中的空项。我可以更改页面(列表水平滚动的页面注释),下一个项目也是空的。如果我删除addElement(scroller),我可以完美地看到这些项目,但没有我真正需要的垂直滚动。所以问题出在卷轴上。知道我做得那么糟糕吗?请?我需要actionscript中的解决方案,我有更多的itemrenderers完成,我将继承,并且动作的性能在actionscript中更好。提前谢谢。

3 个答案:

答案 0 :(得分:0)

我从未在项呈示器中使用滚动条......但是您可以查看Scroller组件?像这样:

<s:ItemRenderer>
    <s:Scroller width="100%" height="100%">
        <s:Group>
            <Your_components_here />
        </s:Group>
    </s:Scroller>
</s:ItemRenderer>

不确定它是否会有任何不同。

答案 1 :(得分:0)

为了工作,卷轴需要实际的宽度和高度。您传递的组似乎实际上是空的,尽管它们有一组percentWidth。将内容添加到其中。

如果您正在滚动文字,那么使用TextArea的内置滚动条件可能更为可行。

答案 2 :(得分:0)

我解决了,在Grigorash Vasilij的指导下,我注意到滚动条的内容没有显示,因为在组中内容大小为0而私有可见变量为false。因此,滚动条的百分比大小无效,我在方法updateDisplayList中更新了它。

    override protected function updateDisplayList( unscaledWidth:Number, unscaledHeight:Number ):void
    {                       
        super.updateDisplayList( unscaledWidth, unscaledHeight );

        scroller.width = unscaledWidth;
        scroller.height = unscaledHeight;
        ...
    }

之后,滚动条是水平的,然后水平滚动不起作用,我想在项目渲染器中需要一个verticalScroll,所以在Scroller的构造函数之后我将滚动的horizo​​ntalPolicy设置为off。结果是下一个:

    override protected function createChildren():void
    {
        super.createChildren();
        scroller = new Scroller();
        scroller.percentHeight = 100;
        scroller.percentWidth = 100;
        scroller.setStyle("horizontalScrollPolicy", "off");
        scrollGroup = new Group();
        scrollGroup.percentHeight = 100;
        scrollGroup.percentWidth = 100;
        addChild(scrollGroup);
        scroller.viewport = scrollGroup;
        addChild(scroller);

    }

我的类继承BaseRenderer from Asfusion如果你继承了itemrenderer,请使用addElement而不是addChild。