如果我在Spark数据网格中有10列,并且某些标题需要左对齐,一些标题右对齐,有些标题居中,最简单的方法是什么?
假设需要一个自定义headerRenderer,是否有任何简单的例子可以引导我完成它?
提前感谢任何评论。
答案 0 :(得分:4)
我能找到解决此问题的最简单方法是覆盖spark DefaultGridHeaderRenderer中的设置,如以下链接所述:
http://flexponential.com/2011/10/30/changing-fontweight-of-spark-datagrid-headers/
更具体地说,我使用了以下自定义headerRenderer,保存为文件:myRightHeaderRenderer.mxml:
<?xml version="1.0" encoding="utf-8"?>
<s:DefaultGridHeaderRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" >
<fx:Declarations>
<s:Label id="labelDisplay"
verticalCenter="1" left="0" right="0" top="0" bottom="0"
verticalAlign="middle"
maxDisplayedLines="1"
textAlign="right"
fontWeight="bold"
showTruncationTip="true" />
</fx:Declarations>
</s:DefaultGridHeaderRenderer>
此自定义标题渲染器右对齐标题文本。要使用它,只需将其添加到Spark DataGrid的一个或多个列,如下所示:
...
<fx:Array>
<s:GridColumn ... />
<s:GridColumn headerRenderer="myRightHeaderRenderer" ...>
<s:GridColumn ... />
...
</fx:Array>
...
我不确定如何操作,但我确信通过将textAlign属性参数化为center
,left
或right
可以使其更加灵活。
答案 1 :(得分:2)
如果您查看this blog post,可以使用相当数量的source code来告诉您如何执行此操作。
但是,我认为博客的例子比你需要的要复杂得多。您需要一个自定义headerRenderer,但您的代码应该非常简单。我只是轻轻地测试了这个,所以如果你有任何问题,请告诉我。
package
{
import spark.skins.spark.DefaultGridHeaderRenderer;
public class CustomGridHeader extends DefaultGridHeaderRenderer
{
public function CustomGridHeader()
{
super();
}
public function set headerTextAlign(value:String):void
{
labelDisplay.setStyle("textAlign",value);
labelDisplay.styleChanged("textAlign");
}
}
}
[Bindable] private var leftFactory:ClassFactory = new ClassFactory(CustomGridHeader);
[Bindable] private var rightFactory:ClassFactory = new ClassFactory(CustomGridHeader);
[Bindable] private var centerFactory:ClassFactory = new ClassFactory(CustomGridHeader);
initialize
或preinitialize
... leftFactory.properties = {headerTextAlign: "left"};
rightFactory.properties = {headerTextAlign: "right"};
centerFactory.properties = {headerTextAlign: "center"};
<s:GridColumn headerText="..." headerRenderer="{centerFactory}"/>