在布局中删除Flex Chart Axis Renderer?

时间:2011-03-19 20:02:19

标签: flex

我试图在flex中隐藏垂直和水平轴渲染器,这样我就可以在没有它们的情况下拍摄图表。

我将两个渲染都设置为visible = false和includeInLayout = false。他们没有出现,但他们仍然占据空间。我已经尝试将宽度/高度设置为0,这也无济于事。

        <mx:horizontalAxisRenderers>
        <mx:AxisRenderer
            id="horizontalAxisRenderer"
            axis="{dtAxis}"
            axisStroke="{axis}" 
            placement="bottom"
            minorTickPlacement="outside" 
            minorTickLength="10" 
            tickLength="12" 
            tickPlacement="outside"
            color="0x707275"
            styleName="axisStyle"
            visible="false"
            includeInLayout="false"
            >
            <mx:tickStroke>{ticks}</mx:tickStroke>
            <mx:minorTickStroke>{mticks}</mx:minorTickStroke>
        </mx:AxisRenderer>
    </mx:horizontalAxisRenderers>

    <mx:verticalAxisRenderers>
        <mx:AxisRenderer
            id="verticalAxisRenderer"
            axis="{laMain}"
            axisStroke="{axis}" 
            placement="bottom"
            minorTickPlacement="outside" 
            minorTickLength="10" 
            tickLength="12" 
            tickPlacement="outside"
            fontSize="15"
            color="0x707275"
            labelGap="0"
            styleName="axisStyle"
            visible="false"
            includeInLayout="false"
            >
            <mx:tickStroke>{ticks}</mx:tickStroke>
            <mx:minorTickStroke>{mticks}</mx:minorTickStroke>
        </mx:AxisRenderer>
    </mx:verticalAxisRenderers>

4 个答案:

答案 0 :(得分:4)

类似的问题was asked here,在this answer的基础上,我找到了成功。尝试以下内容,如果需要,可以从LinearAxis调整轴类型到您可能使用的任何轴:

  <mx:horizontalAxis>
    <mx:LinearAxis id="myXAxis" />
  </mx:horizontalAxis>
  <mx:horizontalAxisRenderers>
    <mx:AxisRenderer axis="{myXAxis}"
                     minorTickPlacement="none"
                     tickPlacement="none"
                     labelGap="0"
                     showLabels="false" showLine="false"
                     visible="false" includeInLayout="false" />
  </mx:horizontalAxisRenderers>

我仍然需要保持渲染器和轴之间的绑定。没有它,应用程序似乎根本不想加载。

答案 1 :(得分:1)

如果您想要删除/隐藏轴,为什么要将所有绑定的信息输入?

<mx:AxisRenderer visible="false" includeInLayout="false" /> 

应该这样做。

答案 2 :(得分:1)

要动态添加轴渲染器,您应该这样做。

var tp:Array = barChart.verticalAxisRenderers;
axisRenderer = new AxisRenderer();
axisRenderer.axis = v2Axis;
axisRenderer.placement = "right";
tp.push(axisRenderer);
barChart.verticalAxisRenderers = tp;    

这里v2Axis是我们添加此渲染器的verticalAxis。图表左侧已有垂直轴。我们刚刚在右侧添加了一个垂直轴。

如果要隐藏轴渲染器,请执行此操作

var tp:Array = barChart.verticalAxisRenderers;
axisRenderer.includeInLayout =false;
axisRenderer.visible = false;
tp = null;
barChart.verticalAxisRenderers = tp;

这里barChart是图表的id。它会起作用。

答案 3 :(得分:0)

尝试将左,右,顶部,底部排水沟设置为较小的值。这些确定了与AxisRenderes放在一起的间隙的尺寸。图表默认自动计算这些。情况可能是在计算排水沟时没有考虑visible和includeInLayout属性。有关这些工作的详细信息,请参阅computedGutters and dataRegion