You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flex.apache.org by "Merten P. (JIRA)" <ji...@apache.org> on 2013/02/05 20:40:13 UTC

[jira] [Created] (FLEX-33383) List is Flickering on mobile when different number of lines in message

Merten P. created FLEX-33383:
--------------------------------

             Summary: List is Flickering on mobile when different number of lines in message
                 Key: FLEX-33383
                 URL: https://issues.apache.org/jira/browse/FLEX-33383
             Project: Apache Flex
          Issue Type: Bug
          Components: Mobile: List
    Affects Versions: Apache Flex 4.9.0
            Reporter: Merten P.


On a List with an IconItemRenderer in it. When beginning to scroll on mobile, the list is flickering on the first time (gets white for one frame). This only happens when the messageField/messageFunction is set and there is a different number of lines in the message areas.

Sample Code:

<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark" title="HomeView">
    <s:actionContent>
        <s:Button label="Set List" click="btn_click(event)"/>
    </s:actionContent>
    <s:List width="100%" height="100%" id="list">
        <s:itemRenderer>
            <fx:Component>
                <s:IconItemRenderer messageField="text"/>
            </fx:Component>
        </s:itemRenderer>
    </s:List>
    <fx:Script>
        <![CDATA[
            import mx.collections.ArrayList;

            protected function btn_click(event:MouseEvent):void
            {
                var al:ArrayList = new ArrayList;
                var obj:Object;
                var str:String = "blablablablablablablablablablablablablablablablablablablablabblablablablablablablablablablablablablablablablablablablablabblablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla";
                for(var i:int = 0; i < 20; i++) {
                    obj = new Object;
                    obj.text = str.substr(0, Math.random()*str.length);
                    al.addItem(obj);
                }
                list.dataProvider = al;
            }

        ]]>
    </fx:Script>
</s:View>

Solution:

Either in the list component:

<s:List xmlns:s="library://ns.adobe.com/flex/spark"
        initialize="initializeHandler(event)" horizontalScrollPolicy="off">
    <fx:Script>
        <![CDATA[
            import spark.layouts.HorizontalAlign;
            import spark.layouts.VerticalLayout;

            //init
            protected override function initializeHandler(e:FlexEvent):void
            {
                (dataGroup.layout as VerticalLayout).horizontalAlign = HorizontalAlign.CONTENT_JUSTIFY;
            }
        ]]>
    </fx:Script>
</s:List>

Or via Skinning:

package skins
{
    import spark.layouts.HorizontalAlign;
    import spark.layouts.VerticalLayout;
    import spark.skins.mobile.ListSkin;

    public class MyListSkin extends ListSkin
    {
        public function MyListSkin()
        {
            super();
        }

        //create children
        override protected function createChildren():void
        {
            super.createChildren();

            //change align on vertical layout
            if(dataGroup && dataGroup.layout && dataGroup.layout is VerticalLayout)
            {
                var layout:VerticalLayout = dataGroup.layout as VerticalLayout;
                layout.horizontalAlign = HorizontalAlign.CONTENT_JUSTIFY;
            }
        }
    }
}

with CSS:

s|List
{
    skinClass: ClassReference("skins.MyListSkin");
    horizontalScrollPolicy: off;
}

See: http://stackoverflow.com/questions/10490117/flex-mobile-list-flickers/14714690 for more info

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira