Flex DataGrid itemRanderer 里的Text控件实现textRollOverColor

如果有这样一个item Renderer,如下代码所示:
<mx:Box xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" borderColor="#FFFFFF" > 
<mx:Label id="title"/>
<mx:Image source="logo.png"/>
</mx:Box>

很明显id=title的Label 是不会实现textRollOverColor的,因为Box的color无论如何变化都不会影响到title Label的字体颜色。

每一个grid item是mx.controls.dataGridClasses.DataGridItemRenderer的实例。textRollOverColor是DataGridItemRenderer在validateNow的时候重新计算得出的。例如 在下面代码validateNow里的 mytxt.setStyle("color", newColor);

解决方案代码如下:

public class labelItemRanderer extends HBox implements IDataRenderer, IDropInListItemRenderer,IListItemRenderer {
public var mytxt:Label;

public function TradeStatusItemRanderer() {
super();
mytxt= new Label();
this.addChild(mytxt);
}

private var _data:Object;
override public function get data():Object {
return _data;
}
override public function set data(value:Object):void {
_data = value;
}

private var _listData:DataGridListData;

[Bindable( "dataChange" )]
public function get listData():BaseListData {
return _listData;
}

public function set listData( value:BaseListData ):void {
_listData = DataGridListData( value );
}

override public function validateNow():void
{
if (data && parent){
var newColor:Number;

if (DataGridBase(_listData.owner).isItemHighlighted(_listData.uid))
{
newColor = getStyle("textRollOverColor");
}
else if (DataGridBase(_listData.owner).isItemSelected(_listData.uid))
{
newColor = getStyle("textSelectedColor");
}
else
{
newColor = getStyle("color");
}

}
mytxt.setStyle("color", newColor);
super.validateNow();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值