OldHawk

菜地一块,欢迎拍砖
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Displaying icons in a Flex List control

Posted on 2008-01-11 22:06  OldHawk  阅读(1021)  评论(0编辑  收藏  举报
The following example demonstrates how to use embedded images in a List control so that each item in the list displays a little icon based on a certain property in the data provider. You’ll also notice that we set the textIndent style to give the label a bit more padding from the icon. Finally, we create three non-interactive Button controls beneath the list as a sort of “legend” for the icons
<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2007/08/17/displaying-icons-in-a-flex-list-control/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout
="vertical"
        verticalAlign
="middle"
        backgroundColor
="white">

    
<mx:Script>
        
<![CDATA[
            [Bindable]
            [Embed(source="assets/bulletCheck.png")]
            public var BulletCheck:Class;

            [Bindable]
            [Embed(source="assets/bulletWarning.png")]
            public var BulletWarning:Class;

            [Bindable]
            [Embed(source="assets/bulletCritical.png")]
            public var BulletCritical:Class;
        
]]>
    
</mx:Script>

    
<mx:List id="list"
            labelField
="label"
            iconField
="icon"
            rowCount
="4"
            width
="200"
            themeColor
="haloSilver"
            textIndent
="5">
        
<mx:dataProvider>
            
<mx:Array>
                
<mx:Object label="Item 1" icon="BulletWarning" />
                
<mx:Object label="Item 2" icon="BulletCritical" />
                
<mx:Object label="Item 3" icon="BulletCritical" />
                
<mx:Object label="Item 4" icon="BulletCheck" />
                
<mx:Object label="Item 5" icon="BulletWarning" />
                
<mx:Object label="Item 6" icon="BulletCheck" />
                
<mx:Object label="Item 7" icon="BulletCheck" />
                
<mx:Object label="Item 8" icon="BulletCritical" />
            
</mx:Array>
        
</mx:dataProvider>
    
</mx:List>

    
<mx:HBox>
        
<mx:Button label="Success"
                icon
="{BulletCheck}"
                mouseEnabled
="false"
                skin
="{null}" />

        
<mx:Button label="Warning"
                icon
="{BulletWarning}"
                mouseEnabled
="false"
                skin
="{null}" />

        
<mx:Button label="Critical"
                icon
="{BulletCritical}"
                mouseEnabled
="false"
                skin
="{null}" />
    
</mx:HBox>

</mx:Application>


You can also add icons to a List control using the iconFunction property, as seen in the following example. Note that the list’s data provider doesn’t contain a column with the name of the specific icon to use, the icon is being determined by a user-defined function which calculates the icon from the “data” property in data provider.

<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2007/08/17/displaying-icons-in-a-flex-list-control/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout
="vertical"
        verticalAlign
="middle"
        backgroundColor
="white">

    
<mx:Script>
        
<![CDATA[
            [Bindable]
            [Embed(source="assets/bulletCheck.png")]
            public var BulletCheck:Class;

            [Bindable]
            [Embed(source="assets/bulletWarning.png")]
            public var BulletWarning:Class;

            [Bindable]
            [Embed(source="assets/bulletCritical.png")]
            public var BulletCritical:Class;

            private function list_iconFunc(item:Object):Class {
                var iconClass:Class;

                if (item.data >= 8) {
                    iconClass = BulletCheck;
                } else if (item.data >= 5) {
                    iconClass = BulletWarning;
                } else {
                    iconClass = BulletCritical;
                }

                return iconClass;
            }
        
]]>
    
</mx:Script>

    
<mx:List id="list"
            labelField
="label"
            iconFunction
="list_iconFunc"
            rowCount
="4"
            width
="200"
            themeColor
="haloSilver"
            textIndent
="5">
        
<mx:dataProvider>
            
<mx:Array>
                
<mx:Object label="Item 1" data="7" />
                
<mx:Object label="Item 2" data="3" />
                
<mx:Object label="Item 3" data="1" />
                
<mx:Object label="Item 4" data="8" />
                
<mx:Object label="Item 5" data="5" />
                
<mx:Object label="Item 6" data="8" />
                
<mx:Object label="Item 7" data="9" />
                
<mx:Object label="Item 8" data="2" />
            
</mx:Array>
        
</mx:dataProvider>
    
</mx:List>

    
<mx:HBox>
        
<mx:Button label="Success"
                icon
="{BulletCheck}"
                mouseEnabled
="false"
                skin
="{null}" />

        
<mx:Button label="Warning"
                icon
="{BulletWarning}"
                mouseEnabled
="false"
                skin
="{null}" />

        
<mx:Button label="Critical"
                icon
="{BulletCritical}"
                mouseEnabled
="false"
                skin
="{null}" />
    
</mx:HBox>

</mx:Application>