Flex DataGrid Header separators的样式
日期:2009-04-02 阅读:145 分类:Flex~Flash
尽管Flex中默认的其他主题样式很容易通过css定义,但有些样式例如DataGrid每一个 column Header的分割器却不容易被定义。因为这样元素的Halo skin是可以被重载的,所以我们可以用下面的解决方案改变颜色或者完全的清除掉它。
在每一个data grid 的column header 之间有两个默认的1像素的垂直线(一条是有50%透明度的白线,另一条和border颜色一致),但是在某些例子中这个看起来是并不是太好,白色的线太明显了,或者你并不想要这个白色的垂直线。
有许多方法可以解决这个问题,DataGrid有一个css样式叫“HeaderSeparatorSkin”,我们可以创建一个1×1px 的透明gif图片代替图片。
另一种方法是创建一个类NullSkin,我们可以用它完全清除separators,程序化的皮肤可以继承自ProgrammaticSkin, Border or RectBorder 类,在这个例子中我们将继承自ProgrammicSkin类,重载它的measuredWidth(), measuredHeight() and updateDisplayList(w:Number, h:Number)方法:
package com.triggersoft.skins{ import mx.skins.ProgrammaticSkin; import flash.display.Graphics; public class NullSkin extends ProgrammaticSkin { public function NullSkin() { super(); } override public function get measuredWidth():Number { return 0; } override public function get measuredHeight():Number { return 0; } override protected function updateDisplayList(w:Number, h:Number):void {} }}
在以上代码中我们返回一个0 x 0px尺寸的皮肤,updateDisplayList 方法中没做任何操作。我们可以用下面的css应用到Datagrid的皮肤中:
header-separator-skin: ClassReference("com.triggersoft.skins.NullSkin");清除separators是个不错的处理方式,但如果我们想创建一个更加自定义化的皮肤呢?例如我们可以创建一个和Datagrid的border同样颜色的1px宽的垂直线:package com.triggersoft.skins{ import mx.skins.ProgrammaticSkin; import flash.display.Graphics; public class DGHeaderColourSeparator extends ProgrammaticSkin { public function DGHeaderColourSeparator() { super(); } override public function get measuredWidth():Number { return 1; } override public function get measuredHeight():Number { return 10; } override protected function updateDisplayList(w:Number, h:Number):void { var borderColor:uint = getStyle("borderColor"); var g:Graphics = graphics; g.moveTo(0,0); g.lineStyle(1,borderColor); g.lineTo(0,h); } }}
然后再设置css到我们的应用中:
header-separator-skin: ClassReference("com.triggersoft.skins.DGHeaderColourSeparator ");
from:
在每一个data grid 的column header 之间有两个默认的1像素的垂直线(一条是有50%透明度的白线,另一条和border颜色一致),但是在某些例子中这个看起来是并不是太好,白色的线太明显了,或者你并不想要这个白色的垂直线。
有许多方法可以解决这个问题,DataGrid有一个css样式叫“HeaderSeparatorSkin”,我们可以创建一个1×1px 的透明gif图片代替图片。
另一种方法是创建一个类NullSkin,我们可以用它完全清除separators,程序化的皮肤可以继承自ProgrammaticSkin, Border or RectBorder 类,在这个例子中我们将继承自ProgrammicSkin类,重载它的measuredWidth(), measuredHeight() and updateDisplayList(w:Number, h:Number)方法:
package com.triggersoft.skins{ import mx.skins.ProgrammaticSkin; import flash.display.Graphics; public class NullSkin extends ProgrammaticSkin { public function NullSkin() { super(); } override public function get measuredWidth():Number { return 0; } override public function get measuredHeight():Number { return 0; } override protected function updateDisplayList(w:Number, h:Number):void {} }}
在以上代码中我们返回一个0 x 0px尺寸的皮肤,updateDisplayList 方法中没做任何操作。我们可以用下面的css应用到Datagrid的皮肤中:
header-separator-skin: ClassReference("com.triggersoft.skins.NullSkin");清除separators是个不错的处理方式,但如果我们想创建一个更加自定义化的皮肤呢?例如我们可以创建一个和Datagrid的border同样颜色的1px宽的垂直线:package com.triggersoft.skins{ import mx.skins.ProgrammaticSkin; import flash.display.Graphics; public class DGHeaderColourSeparator extends ProgrammaticSkin { public function DGHeaderColourSeparator() { super(); } override public function get measuredWidth():Number { return 1; } override public function get measuredHeight():Number { return 10; } override protected function updateDisplayList(w:Number, h:Number):void { var borderColor:uint = getStyle("borderColor"); var g:Graphics = graphics; g.moveTo(0,0); g.lineStyle(1,borderColor); g.lineTo(0,h); } }}
然后再设置css到我们的应用中:
header-separator-skin: ClassReference("com.triggersoft.skins.DGHeaderColourSeparator ");
from:
本页链接: http://www.scriptlover.com/static/500-datagrid-header-separators
标签: datagrid header separators
相关文章
- list,DataGrid,Tree组件样式属性 2009-01-18
- HttpClient:Invalid cookie header 2011-11-15
- The X-Frame-Options response header 2011-11-01
- HTTP Header 详解 2011-08-21
网友评论
#1: 2011-9-27 10:07:00 by Makaela
shiver me tmirbes, them's some great information.