achartengine图在RelativeLayout中无法正确绘制

时间:2012-01-27 18:51:40

标签: java android achartengine

我遇到了一个achartengine图表的问题 - 如截图所示:

the broken layout

看起来X轴给出了太多的底部填充,并且值是重复的(每个值的一个表示在图中是正确的,并且对平移做出正确反应,而另一个位于图的底部)查看,但不能以任何方式操纵。)

以下是用于创建图表的代码:

protected void onCreate(Bundle savedInstanceState) {
        ...
        gDataset = new XYMultipleSeriesDataset();

        gRenderer = new XYMultipleSeriesRenderer();
        gRenderer.setApplyBackgroundColor(true);
        gRenderer.setPointSize(10);

        chart = new TimeBarChart(gDataset, gRenderer);
        graphView = new GraphicalView(this, chart);
        graphHolder.addView(graphView);
        //Mode is just an internal enum
        chart.setDateFormat(curMode == Mode.DAY ? "HH:mm dd.MM.yyyy" : "dd.MM.yyyy");
        ....
}

并填充它:

...
//some DB stuff goes here, result is the cursor

curSeries = new XYSeries("");
gDataset.addSeries(curSeries);

XYSeriesRenderer renderer = new XYSeriesRenderer();
renderer.setColor(Color.RED);
renderer.setPointStyle(PointStyle.POINT);
gRenderer.addSeriesRenderer(renderer);
while (!result.isAfterLast()) {
    .....
    curSeries.add(timestamp,value);
      ....
}
.....
graphView.invalidate();
graphView.repaint();

这里是图表持有者在布局XML中的视图定义(当然主容器是RelativeLayout):

<LinearLayout
    android:id="@+id/graphHolder"
    android:layout_width="fill_parent"
    android:layout_height="200dp"
    android:layout_alignParentTop="true"
    android:minHeight="200dp">
</LinearLayout>

有几件事:

  • 我正在使用0.7版本。
  • TimeBarChart类只不过是一个TimeChart,只需简单的更改即可扩展BarChart。代码是从0.7版本复制的。无论如何,我之前使用的是ChartFactory#getTimeChartView(),结果是一样的 - 所以这不是导致问题的原因。
  • 我已经尝试检查高度布局参数是否会导致问题,但那也不是。
  • graphHolder由RoboGuice注入。
  • 在2.3仿真器中遇到了问题。

显然,我做错了什么,但我不知道是什么。非常感谢任何帮助。

PS。我试图将它贴在achartengine组上,但看起来这些冬天正在冬眠;)。

1 个答案:

答案 0 :(得分:0)

我终于有时间重新调查这一点了,并把它想出来了。

要点:

底部的栏是图例。我的代码中有一个错误导致它为每个数据点创建一个系列,因此在实际的图例图形中有多个“条形”。该系列没有名字,这增加了混乱。

修复错误并添加setShowLegend(false)处理问题。

我在评估AndroidPlot时已经发现了这一点(顺便说一句,我推荐它作为achartengine的替代品,因为图形可以用XML定义,并且可以比截图显示的图形更自由地定制)。 / p>

我在某种程度上没有注意到achartengine截图中的传说,但我在AndroidPlot中认出了它们。是的,我现在觉得很愚蠢:)。