如何在AChartEngine中的Axis上添加ImageView而不是Labels?

时间:2014-02-12 07:19:41

标签: android achartengine

我想在XAxis上添加Image而不是Labels,有人知道怎么做吗?

提前致谢。

  

更新

我想做类似下图的事情。

enter image description here

1 个答案:

答案 0 :(得分:0)

为此,您必须编辑Achartengine的源代码,因为没有任何直接的方法。

绘制圆圈而不是小线条。对于圆圈的不同颜色,您可能需要更改其他一些东西。

更改drawXLabels()中的XYChart.java方法。

protected void drawXLabels(List<Double> xLabels, Double[] xTextLabelLocations, Canvas canvas,
      Paint paint, int left, int top, int bottom, double xPixelsPerUnit, double minX, double maxX) {
    int length = xLabels.size();
    boolean showLabels = mRenderer.isShowLabels();
    boolean showGridY = mRenderer.isShowGridY();
    boolean showTickMarks = mRenderer.isShowTickMarks();
    for (int i = 0; i < length; i++) {
      double label = xLabels.get(i);
      float xLabel = (float) (left + xPixelsPerUnit * (label - minX));
      if (showLabels) {
        paint.setColor(mRenderer.getXLabelsColor());
        if (showTickMarks) {
//          canvas.drawLine(xLabel, bottom, xLabel, bottom + mRenderer.getLabelsTextSize() / 3, paint);
          canvas.drawCircle(xLabel, bottom + mRenderer.getLabelsTextSize() / 3,3, paint);

        }
        drawText(canvas, getLabel(mRenderer.getLabelFormat(), label), xLabel,
            bottom + mRenderer.getLabelsTextSize() * 4 / 3 + mRenderer.getXLabelsPadding(), paint,
            mRenderer.getXLabelsAngle());
      }
      if (showGridY) {
        paint.setColor(mRenderer.getGridColor(0));
//        canvas.drawLine(xLabel, bottom, xLabel, top, paint);
        canvas.drawCircle(xLabel, top,3, paint);
      }
    }
    drawXTextLabels(xTextLabelLocations, canvas, paint, showLabels, left, top, bottom,
        xPixelsPerUnit, minX, maxX);
  }