如果有这样一个item Renderer,如下代码所示:
很明显id=title的Label 是不会实现textRollOverColor的,因为Box的color无论如何变化都不会影响到title Label的字体颜色。
每一个grid item是mx.controls.dataGridClasses.DataGridItemRenderer的实例。textRollOverColor是DataGridItemRenderer在validateNow的时候重新计算得出的。例如 在下面代码validateNow里的 mytxt.setStyle("color", newColor);
解决方案代码如下:
<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();
}
}