Сейчас я использую библиотеку aChartEngine в своем проекте Android. Это работает хорошо до сих пор. Одна вещь, которую я не могу понять, - это то, как ее сначала отобразить. Единственный способ показать мои данные — щелкнуть и переместиться где-нибудь на графике или нажать кнопки масштабирования. Так изначально отображаются кнопки масштабирования, но не сам график. Я искал методы рендерера, но ничего не получилось. Я вызываю 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)
выглядит подозрительно. Почему бы не вызватьlayout.addView()
вonCreate()
вместоonResume()
? - person Dheeraj Vepakomma   schedule 27.06.2012mMeterObs.getMultipleSeries()
иmMeterObs.getSeriesRenderer()
FWIW. - person Dheeraj Vepakomma   schedule 27.06.2012LinearLayout
находится вScrollView
, вы должны позвонитьrenderer.setInScroll(true);
. Также заполните диаграмму некоторыми значениями для начала и проверьте. - person Dheeraj Vepakomma   schedule 27.06.2012LinearLayout
— это корневой вид. Я совершенно уверен, что сузил проблему до того, что у XYSeries не было никаких данных, пока я не начал их собирать. Надеялся, что есть обходной путь. :\ - person trevor-e   schedule 27.06.2012