自定义List被选中项的外观

47 篇文章 0 订阅

自定义List被选中项的外观

5.13.1.问题
为List 组件中的选中项贴上一个图片
5.13.2.解决方法
覆盖ListBase 类的drawSelectionIndicator 方法并修改由该方法使用的指示器Sprite 对象。
5.13.3.讨论
List 控件通过drawSelectionIndicator 方法为在列表中选中的itemRenderer 创建外观。
该方法的信息如下:

+展开
-ActionScript
override  protected  function drawSelectionIndicator(indicator:Sprite, x:Number, y:Number,width:Number, height:Number, color:uint, itemRenderer:IListItemRenderer): void


所有的偏移量,大小,色彩信息都可以由x, y, width, height, 和color 属性来设置。第一个参数indicator,是一个画在选中项上的flash.display.Sprite 实例,最后一个参数itemRenderer 是将被选择的条目渲染器。

实现方法的例子添加了一个图片到指示器Sprite 对象,由于当itemRenderer 被撤消选中时sprite 对象被移除和销毁,所以不必担心后面的回收。

除了应用于所有高光的itemRenderer , drawHighlightIndicatory 方法和drawSelectionIndicator 方法功能一样, itemRenderer 被用户鼠标滑过,但不选择,请看:

+展开
-ActionScript
override  protected  function drawHighlightIndicator(indicator:Sprite, x:Number, y:Number,width:Number, height:Number, color:uint, itemRenderer:IListItemRenderer): void


用一张单独的图片来表现高光,放到itemRenderer 的边缘,并在用户鼠标滑过列表的itemRenderer 时显示。
下面是该技术的完整清单:

+展开
-XML
<?xml version="1.0" encoding="utf-8"?>
<mx:List xmlns:mx="http://www.adobe.com/2006/mxml" width="71" height="48"
 backgroundImage="liebiao.png">
 <mx:Script>
 <![CDATA[
  import mx.controls.listClasses.IListItemRenderer;
  [Embed("xuanzhong.png")]
  private var img:Class;
  [Embed("xuanzhong.png")]
  private var highlight_img:Class;
   override protected function drawHighlightIndicator(indicator:Sprite, x:Number,y:Number, width:Number, height:Number, color:uint,itemRenderer:IListItemRenderer):void {
   var this_img:Object = new highlight_img();
   indicator.addChild((this_img as DisplayObject));
   (this_img as DisplayObject).x =0;//itemRenderer.width -(this_img as DisplayObject).width;  0xA4A3A1
   super.drawHighlightIndicator(indicator, x, y+2, width, height, 0xA4A3A1,itemRenderer);
   indicator.x=3;
   indicator.width=64;
   indicator.height=20;
   indicator.alpha=1;
   indicator.graphics.clear();
  }
  override protected function drawCaretIndicator(indicator:Sprite, x:Number, y:Number, width:Number, height:Number, color:uint, itemRenderer:IListItemRenderer):void
     {
      super.drawCaretIndicator(indicator, 0, y, 65, 20, 0xffffff,itemRenderer);
      indicator.x=3;
   indicator.width=64;
   indicator.height=20;
   indicator.alpha=1;
   indicator.graphics.clear();
     }
  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 = 0;//itemRenderer.width - (this_img as DisplayObject).width
   super.drawSelectionIndicator(indicator, x, y+2, width,height, 0xA42011,itemRenderer);
   indicator.x=3;
   indicator.width=64;
   indicator.height=20;
   indicator.alpha=1;
   indicator.graphics.clear();
  }
 
 ]]>
 </mx:Script>
</mx:List>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值