`
superwulei
  • 浏览: 106291 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

为列表选中项添加图标

阅读更多

继为List添加序号之后,老总又提出了新的要求:为列表中的当前选中项添加一个指示图标。

在得到正确解决方案之前,我因此苦恼了两天。尝试了许多种方法,都没有得到理想的结果。但是把基本问题搞清楚了,为列表中的当前选项添加指示图标,情况有三种:

1. 列表项之间切换时(鼠标点击列表项,或通过键盘上下选中列表项)

2. 新添加列表项

3. 删除列表项

第一个比较好解决,但是第2个和第3个问题看似简单,但做起来却经常和第一个发生冲突。

 

艰难的求解里程不在此多说了,直接切入主题。

还好感谢《Flex 3 Cookbook中文版》第五章13节所讲解的内容。其实不必自己去想的那么多,List组件中有两个“效果”我们应该能够注意到:一个是当列表项被选中的效果,另一个是当鼠标移到列表项但还未选中(点击)的效果。其中drawHighlightIndicator就是还未选中的效果(高亮效果),drawSelectionIndicator是选中的效果。这两个效果被封装在这两个方法中,代码如下:

<mx:List xmlns:mx="http://www.adobe.com/2006/mxml" selectionColor="#ffcccc">
    <mx:Script>
        <![CDATA[

            import mx.controls.listClasses.IListItemRenderer;

            [Embed("../../assets/outline_arrow.gif")]
            private var img:Class;

            [Embed("../../assets/in_arrow.gif")]
            private var highlight_img:Class;

            override protected function drawHighlightIndicator(indicator:Sprite, 
x:Number, y:Number, width:Number, height:Number, color:uint, itemRenderer:IListItem
Renderer):void
            {
                var this_img:Object = new highlight_img();
                indicator.addChild((this_img as DisplayObject));
                (this_img as DisplayObject).x = itemRenderer.width - (this_img as Disp
layObject).width
                super.drawHighlightIndicator(indicator, x, y, width, height, 0xff0000,
itemRenderer);
            }

            override protected function drawSelectionIndicator(indicator:Sprite, 
x:Number, y:Number, width:Number, height:Number, color:uint, itemRenderer:
IListItemRenderer):void
            {
                var this_img:Object = new img();
                indicator.addChild((this_img as DisplayObject));
                (this_img as DisplayObject).x = itemRenderer.width - (this_img as 
DisplayObject).width
                super.drawSelectionIndicator(indicator, x, y, width, height, 0xffcccc,
itemRenderer);
            }

        ]]>
    </mx:Script>
</mx:List>

 indicator.addChild(...)是将图像加入到渲染器中,紧接着的一行是图像的位置,然后通过调用父类方法传递参数并改变选中和高亮颜色。有了这个方法,我的苦思冥想真是不值得。荀子曰:“吾尝终日而思矣,不如须臾之所学也。”,此话是也。

分享到:
评论
1 楼 svafly 2011-02-17  
每次都会addchild,重叠上去了啊。。。。。

相关推荐

    VB制作带ICO图标的菜单实例.rar

    使各Picture Box控件能够根据图片自动改变大小,得到窗口中菜单的句柄,得到第一个子菜单File的句柄,得到File菜单中的第一个菜单项的ID,然后为其添加图标,也可以添加两个图片,一个表示菜单项被选中状态,...

    易语言自绘大图标列表框

    易语言自绘大图标列表框源码,自绘大图标列表框,是否在矩形内,取高位,取低位,取文本宽度,创建窗体,置控制按钮事件,添加栏目,置栏目现行选中项,取栏目现行标题,添加项目,置项目挂接事件,初始控制按钮,子程序_自绘窗口,...

    Delphi 在ListView中拖动图标.rar

    然后添加一个TListView组件,设置它的LargeImages和SmallImages属性为TImageList组件,为TListView组件添加3个列表项,并且设置列表项的ImageIndex属性分别对应TImageList组件中的图像索引编号。当用户在TListView...

    C#ListView控件使用简单例子源代码

    开发环境:Win7,VS2008 实现功能:选择“大图标”,“小图标”...添加、删除(选中项)、清空项。 (ps:本人也是正在学习C#编程,顺便分享自己的学习成果给大家,希望能给大家有所帮助~~,另外感觉代码结构有些混乱~~)

    Android开发——数据库操作

    实现基于SQLite数据库的通信录应用,通过单击增加图标打开添加通信录界面,通过单击通信录中的各条信息可删除选中项

    VC++实验-鼠标,增加快捷键,快捷键Ctrl+M和菜单命令联动,

    ⑶在工具栏上添加并设计一个工具按钮图标,使该按钮与“鼠标位置”菜单项联动,并添加一个快捷键Ctrl+M和该菜单命令联动; ⑷在窗口客户区中右击鼠标,弹出快捷菜单,显示“查看”中的菜单命令。

    自绘VB列表OCX控件

    鼠标经过和选中的行背景颜色,改变滚动条样式和颜色,添加项目可加载图标图片,单独一行的序列号和备注显示,界面有平面和立体选项等。 对追求外观界面控件的VB爱好者,以及小白,对数组编写有很好的学习价值,该...

    VC++有关基本文档的操作

    ⑴在“查看”菜单下添加...⑶在工具栏上添加并设计一个工具按钮图标,使该按钮与“鼠标位置”菜单项联动,并添加一个快捷键Ctrl+M和该菜单命令联动; ⑷在窗口客户区中右击鼠标,弹出快捷菜单,显示“查看”中的菜单命令

    jQuery+ul+javascript 实现的跨浏览器多级菜单

    * // 获取菜单树选中项的 data 数据 * var val = themenuTree.value(); * * 说明: * 在容器对象 #thetree 上调用 makeTree(option)来构造菜单对象,再调用 addItem 方法添加菜单项 * * 菜单树对象方法: ...

    解决windows7下运行vc6时添加文件会崩溃的问题:FileTool

    3. 打开VC6,右击工具栏,自定义… -&gt; 附加项和宏文件,选中 FileTool Developer Studio Add-in 附加项 这个时候就会出现 A 和 O 的文件栏按钮 1.Add File To Project 2.Open 4. 打开VC6-&gt;工程-&gt;定制-&gt;编辑器...

    将不同类型的快捷方式“隐藏”在微小的Manganese Menu

    (小图标)”项,表示使用小图标显示模式,选择“LargeIcons(大图标)”项,表示使用大图标显示模式,在窗口左上角可以实时预览 Manganese Menu菜单的变化情况。在“Sections Font”列表中可以改变类别名称的字体,在...

    LabVIEW 8.2的卷积和相关信号运算

     在程序框图中添加“卷积和相关”时,或右键单击图标并在快捷菜单中选择“属性”项,会出现如图2所示配置对话框,可对Ⅵ进行配置。  配置对话框包括如下选项。  (1)信号处理。  选中“卷积”表示计算信号的...

    Explorer快捷工具SlxCom6.5.112.806.zip

    在Explorer显示已签名的文件时,会自动添加蓝色的对号图标的覆盖显示。自动校验签名仅处理小于200M大小的文件。XP及更早系统上,可能需要刷新才能显示图标覆盖。 8、数字签名手动校验功能。选中若干文件后可以右击...

    iView中的Select与Poptip结合

    在Vue iView中的Select中选项以及选中项使用Poptip,两个组件结合,组件类,可以直接引入

    配置打印服务器.pptx

    选中这项 单击"下一步"按钮 配置打印服务器全文共22页,当前为第3页。 1 配置打印服务器 单击"下一步"按钮 选中该项 配置打印服务器全文共22页,当前为第4页。 1 配置打印服务器 单击"下一步"按钮 配置打印服务器...

    VBA常用技巧

    技巧135用户窗体添加图标335 技巧136用户窗体添加最大最小化按纽337 技巧137禁用窗体标题栏的关闭按钮338 技巧138屏蔽窗体标题栏的关闭按钮339 技巧139无标题栏和边框的窗体341 技巧140制作年月选择窗体342 技巧141...

    VISUAL C++实效编程280例

    2.2 实例24:在系统菜单中添加和删除菜单项 2.3 实例25:禁用关闭按钮 2.4 实例26:启用和禁用菜单项 2.5 实例27:设置菜单项的检查状态 2.6 实例28:快捷菜单 2.7 实例29:获取光标的坐标 2.8 实例30:限制光标的...

Global site tag (gtag.js) - Google Analytics