继为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(...)是将图像加入到渲染器中,紧接着的一行是图像的位置,然后通过调用父类方法传递参数并改变选中和高亮颜色。有了这个方法,我的苦思冥想真是不值得。荀子曰:“吾尝终日而思矣,不如须臾之所学也。”,此话是也。
分享到:
相关推荐
在Android开发中,"同步列表选中项及EditText监听"是一个常见的交互设计,涉及到多个UI组件的协同工作和事件处理。下面将详细讲解这个主题所涵盖的知识点。 首先,我们来看"列表选中项同步"。这通常指的是在一个...
本篇文章将详细讲解如何在MFC中动态添加、删除树控件的节点以及获取树形控件的选中项。 首先,要动态添加树控件节点,我们需要了解`CTreeCtrl`类,它是MFC封装的树控件。添加节点通常涉及以下几个步骤: 1. 创建新...
在VB(Visual Basic)编程中,为菜单项添加图标是一项常见的任务,这可以增强用户界面的视觉效果,提高用户体验。本实例将详细讲解如何在VB应用程序中为菜单项添加图标。 首先,我们需要理解VB的基本控件和事件处理...
通过以上步骤,我们可以在ListView中实现选中项图标的变化,为用户提供明确的交互反馈。这个过程涉及到了Android的基础知识,包括Adapter模式、事件监听、视图复用以及资源管理等,对于Android开发者来说是必备技能...
例如,ListView可以设置为小图标、大图标、列表或详细信息视图。同时,可以通过设置字体、颜色、图像等样式来提升用户体验。 8. **性能优化**: 当处理大量数据时,要注意性能优化。虚拟化技术可以提高大型列表的...
在VB(Visual Basic)编程环境中,为菜单项添加小图标是一项常见的美化用户界面的操作。这不仅可以提高程序的视觉吸引力,还可以帮助用户更快地识别和理解菜单功能。下面将详细介绍如何在VB菜单中添加小图标。 首先...
要为TreeView控件的节点添加图标,我们需要做以下几步: 1. **资源准备**:首先,你需要准备图标资源。这些图标可以是ICO文件或位图资源,需要在项目的资源文件(如.rc)中定义。例如,你可以创建两个资源ID,如IDI...
例如,在React中,你可以创建一个`CustomSelect`组件,使用`state`来管理选中项,并通过JSX结构来渲染选项,每个选项包含文本和图标。 5. **资源管理**: 图标资源通常以图片、SVG或者字体图标的形式存在。在代码...
这些方法可以帮助我们添加、修改和管理列表项。 2. **整行选中实现**: 在Windows API中,可以通过设置LVITEM结构的state和stateMask字段来改变列表项的状态。对于整行选中,我们需要设置LVIS_SELECTED和LVIS_...
例如,当用户点击超级列表框时,程序可能会触发一个事件处理函数,该函数负责根据选中的项来显示或处理相应的图像。 5. **界面设计**:易语言提供了丰富的图形用户界面(GUI)元素,可以用来创建直观的应用程序。在...
在实际操作中,为了确保用户交互的友好性,我们还需要添加一些额外的逻辑,例如检查是否真的有选中项,或者在删除前询问用户的确认。同时,为了防止数据丢失,可能需要在数据模型(如QVector或QStringList)中维护一...
你需要为`ComboBoxWithImages`添加图标集,然后将每个组合框项与相应的图标关联。例如: ```csharp // 初始化控件 ComboBoxWithImages myComboBox = new ComboBoxWithImages(); myComboBox.ImageList = new ...
接下来,你需要在右侧的列表中找到你希望添加为快捷图标的特定功能。以“删除”功能为例,首先需要在菜单中找到其位置。通常,“删除”功能位于“编辑”菜单下,因此你需要双击“编辑”来展开其子菜单,直到找到...
### 使用VC++6.0为程序添加图标的方法 在软件开发过程中,为程序添加图标不仅可以提升应用程序的专业性和用户体验,还能让程序在众多软件中脱颖而出。本文将详细介绍如何使用VC++6.0为程序添加图标,包括控制台程序...
- 列表控件可以显示图标,通过创建`CImageList`对象并使用`SetImageList`函数关联到列表控件,可以添加图标资源。 8. **自定义视图**: - 列表控件支持自定义视图,可以创建子类化的`CListCtrl`,重写`OnDrawItem...
此外,可能还需要考虑在不同状态下显示不同的图标,例如在菜单项被选中或悬停时显示不同的浮动效果。 为了充分利用这个控件,开发者需要熟悉其文档和示例代码,理解每个属性和方法的作用,以及如何结合VB6的事件...
本案例中,我们将讨论一个基于jQuery的自定义下拉框JS插件,它允许我们为`<select>`元素添加图标,使得选择项更加直观且富有表现力。标题"自定义带图标的select,只需把图标地址写在option的title属性中即可"揭示了...
这些事件可能需要获取选中项的图标和文本,可以通过`GetCurSel`和`GetText`方法结合索引来实现。 通过以上步骤,我们就可以在VC++环境中创建一个支持图标的`ListBox`控件。这种方法增强了`ListBox`的功能,使得它...
1. **添加图标**: 在C#中,我们可以使用ImageList组件来存储和管理图标。首先创建一个ImageList对象,然后将所需的图标添加到ImageList中。通过设置ListView的SmallImageList或LargeImageList属性,可以将ImageList...
在Windows编程中,特别是在使用Visual C++(VC)进行开发时,给菜单项添加图标是一项常见的需求,可以增强用户界面的美观性和可识别性。本文将深入探讨如何在VC环境下实现这一功能,主要关注以下几个方面: 1. **...