2

首先,这是我的应用程序当前外观的链接:ds

在显示的两个图表中,我想去掉条形图左侧的边距。有任何想法吗?

以下是我的渲染器设置。我已经搜索并无法找到有类似问题的人。看起来应该很简单...

private void drawBarChart(XYMultipleSeriesDataset dataset) {
    int marginT = 10;
    int marginL = 5;
    int marginB = 10;
    int marginR = 5;
    int[] margins = {marginT, marginL, marginB, marginR};

    ...

    XYMultipleSeriesRenderer renderer = buildBarRenderer(colors);
    renderer.setOrientation(Orientation.VERTICAL);
    renderer.getSeriesRendererAt(0).setDisplayChartValues(false);
    renderer.getSeriesRendererAt(1).setDisplayChartValues(false);
    renderer.getSeriesRendererAt(2).setDisplayChartValues(false);
    renderer.setLabelsColor(Color.LTGRAY);
    renderer.setAxesColor(Color.BLACK);
    renderer.setYAxisMin(0);
    renderer.setMargins(margins);
    renderer.setYAxisMax(maxYVal);
    renderer.setYLabels(0);
    renderer.setXLabels(0);
    renderer.setXAxisMin(0);
    renderer.setXAxisMax(2);
    renderer.setZoomEnabled(false,false);
    renderer.setPanEnabled(false, false);
    renderer.setBarSpacing(-0.5);
    renderer.setShowAxes(false);
    renderer.setShowLabels(false);
    renderer.setShowLegend(false);

    ...

    display chart in view
}

protected XYMultipleSeriesRenderer buildBarRenderer(int[] colors) {
    XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
    int length = colors.length;
    for (int i = 0; i < length; i++) {
        SimpleSeriesRenderer r = new SimpleSeriesRenderer();
        r.setColor(colors[i]);
        renderer.addSeriesRenderer(r);
    }
    return renderer;
}

任何帮助将不胜感激,谢谢!

4

1 回答 1

6

偷偷摸摸。

我一直在玩边距,因为我决定使用我自己的 TextViews 作为标题,因为它们渲染得比 AChartEngine 渲染的标题好得多。根据文档,它说明边距工作如下:

margins - an array containing the margin size values, in this order: top, left, bottom, right

这就是为什么我将边距变量设置如下:

int[] margins = {marginT, marginL, marginB, marginR};

事实证明,对于水平条形图,marginB 控制左边距,marginT 控制右边距。换句话说,所有边距都必须顺时针旋转才能按预期工作。(即改变右边距,你改变'top'的边距;改变上边距,你改变'left'的边距;等等)

于 2013-04-01T06:49:06.247 回答