【问题标题】:Achartengine graph not displaying initiallyAchartengine 图表最初不显示
【发布时间】:2012-06-27 14:27:27
【问题描述】:

现在我正在我的 Android 项目中使用 aChartEngine 库。到目前为止,它运行良好。我不知道的一件事是如何让它最初显示。显示我的数据的唯一方法是单击并平移图表上的某处或按缩放按钮。所以最初显示的是缩放按钮,而不是图形本身。我搜索了渲染器的方法,但没有任何效果。我在创建渲染器后调用mSeriesRenderer.setShowGrid(true);,但它不显示。我也尝试过repaint(),但即使这样也不起作用。我是不是在错误的时间打电话给它?

public void onResume()
{
    if(mMeterObs.getGraph() == null)
    {
        LinearLayout layout = (LinearLayout)findViewById(R.id.chart);
        mMeterObs.setGraph(ChartFactory.getLineChartView(this, mMeterObs.getMultipleSeries(), mMeterObs.getSeriesRenderer()));
        layout.addView(mMeterObs.getGraph(), LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
        mMeterObs.repaint();
    }
    else
        mMeterObs.repaint();
}

mMeterObs.getMultipleSeries()mMeterObs.getSeriesRenderer()一开始都是空的,但应该还是可以显示网格和坐标轴的吧?

mMeterObs 的构造函数中,我称之为:

mSeriesRenderer.setXLabels(12);
    mSeriesRenderer.setYLabels(10);
    mSeriesRenderer.setShowGrid(true);
    mSeriesRenderer.setXLabelsAlign(Align.RIGHT);
    mSeriesRenderer.setYLabelsAlign(Align.RIGHT);
    mSeriesRenderer.setZoomButtonsVisible(true);
    mSeriesRenderer.setRange(new double[] { 0.0, 10.0, -1.0, 1.0 });
    //mSeriesRenderer.setPanEnabled(true);
    mSeriesRenderer.setZoomLimits(new double[] { -10, 20, -10, 40 });
    mSeriesRenderer.setGridColor(Color.LTGRAY);
    mSeriesRenderer.setShowGrid(true);
    mSeriesRenderer.setShowAxes(true);
    mSeriesRenderer.setPointSize(.5f);

【问题讨论】:

  • if(mMeterObs.getGraph() == null) 的情况看起来很可疑。为什么不在onCreate() 中调用layout.addView() 而不是onResume()
  • 同时实现mMeterObs.getMultipleSeries()mMeterObs.getSeriesRenderer() FWIW。
  • 我最初也是这样,但我发现的一个 SO 问题建议将其放入 onResume() 中。你的第二条评论是什么意思?
  • 如果LinearLayoutScrollView 中,您必须调用renderer.setInScroll(true);。还要在图表中填写一些值,然后检查。
  • LinearLayout 是根视图。我相当肯定我已经将问题缩小到 XYSeries 在我开始收集之前没有任何数据。希望有一个解决方法。 :\

标签: android achartengine


【解决方案1】:

我建议你添加一些数据系列。 网格仅沿标签显示,但您没有标签。

【讨论】:

  • 嗯,我希望最初显示它,以便用户知道图表可用,然后让用户将数据源添加到图表中。所以它开始时没有一系列数据,然后用户添加他们想要的任何内容。如果没有一系列数据,我无法显示空网格,这似乎很奇怪。
  • 你试过ACE提供的demo程序吗?如果您启动它并选择“嵌入式折线图演示”,您将看不到任何图表。单击“新系列”,您将看到轴。这是因为添加了一个空系列。只需添加一个空系列,您就会看到轴。
  • 添加一个空白系列有效,尽管现在我正在尝试删除一个空白图例条目。不过,我会将其标记为正确。
  • renderer.setShowLegend(false);
  • XYSeriesRenderer 似乎没有那个方法。我只是将颜色设置为黑色作为快速破解,现在已经足够了。 :\
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-18
  • 1970-01-01
相关资源
最近更新 更多