2011-03-14 154 views
0

这个任务看起来并不难,但是在过去的几个小时里它一直阻止我。我正在做一个堆积条形图,我希望标签在每个条形图段内水平和垂直居中。标签被设置为“内部”。这样,您可以通过设置label-align:middle来轻松地将标签居中放置,但似乎没有任何东西可以处理垂直方面。BarChart - 垂直中心标签

下一个方法是创建条形图的自定义组件,但是当我搞乱渲染函数时,这会变得非常混乱。我认为这只是修改这一行:v.labelY=v.y + barSeries.seriesRenderData.renderedYOffset - barSeries.seriesRenderData.renderedHalfWidth;但它没有奏效。

反正,如果有人有任何想法如何做到这一点,将不胜感激。
附加的是条形图现在的样子。为了澄清,我希望这些标签(图片中的手册)能够垂直居中。

Demo

+0

我有我使用的,现在,我宁可不使用一个非常肮脏的黑客。我设置了一个labelFunction并访问了BarSeries,然后更改了labelContainer的y值。我还没有找到任何高度或任何东西来使这个动态值,所以现在它是硬编码。 – mbseid 2011-03-15 21:26:28

+0

'私有函数的labelFunction(元件:与ChartItem,系列:系列):字符串 \t \t { \t \t \t VAR数据:BarSeriesItem = BarSeriesItem(元件); \t \t \t \t \t \t var currentSeries:BarSeries = BarSeries(series); \t \t \t \t \t \t //这需要更新。没有绝对值可以在这里 \t \t \t currentSeries.labelContainer.y = 35; \t \t \t return“”+ data.item.label; \t \t} ' – mbseid 2011-03-15 21:27:26

回答

2
<mx:BarSeries 
         xField="s1" 
         yField="name" 
         displayName="Employees in shceme" 
         labelAlign="center" 
         labelPosition="inside" 
         styleName="labelStyle" 
         /> 

    <fx:Style> 
     @namespace s "library://ns.adobe.com/flex/spark"; 
     @namespace mx "library://ns.adobe.com/flex/mx"; 

     .labelStyle { 
      verticalAlign:middle; 
     } 
    </fx:Style> 

Enjoy!!! 
0

设置的ColumnSeries的verticalCenter属性为0

+0

我正在使用BarSeries并设置verticalCenter不会影响任何内容。感谢您的尝试。仍然抨击我的头。 – mbseid 2011-03-15 20:55:00

+0

但是你是以列的方式显示图表?尝试将horizo​​ntalCenter设置为0。您也可以使用textAlign属性并将其设置为居中。 – Angelo 2011-03-16 14:02:21