I'm developing an Android application where I have to display several graphs in a one scrollview. Now, I got the linechart to display on scrollview and I can scroll them fine. However, there seems to be problem with panning the charts up or down. Panning stutters and gets very jerky, in practice almost unusable.
Now, I have set renderer.setInScroll(true); and everything else seems to work fine (panning horizontally). I think this has something to do with scrollview interfering with the linechart's touch events, but I'm still too new with Android to figure it out myself.
When I googled, I found this old topic about similar problem: https://groups.google.com/forum/?fromgroups#!topic/achartengine/j6BIrZ8fm4k The person in topic says he solved it with this: HorizontalScrollView within ScrollView Touch Handling but I was unable to apply it to Achart.
Here is the relevant code of my test linechart. It is set into linearlayout inside the scrollview (which is in a Fragment in case it makes any difference):
private XYMultipleSeriesDataset getDemoDataset() {
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
final int nr = 80;
Random r = new Random();
for (int i = 0; i < SERIES_NR; i++) {
XYSeries series = new XYSeries("Demo series " + (i + 1));
for (int k = 0; k < nr; k++) {
series.add(k, 20 + r.nextInt() % 100);
}
dataset.addSeries(series);
}
return dataset;
}
private XYMultipleSeriesRenderer getDemoRenderer() {
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
renderer.setAxisTitleTextSize(12);
renderer.setChartTitleTextSize(12);
renderer.setLabelsTextSize(15);
renderer.setLegendTextSize(15);
renderer.setPointSize(5f);
renderer.setMargins(new int[] { 20, 30, 15, 10 });
XYSeriesRenderer r = new XYSeriesRenderer();
r.setColor(Color.BLACK);
r.setPointStyle(PointStyle.POINT);
r.setFillBelowLine(false);
r.setFillPoints(true);
renderer.addSeriesRenderer(r);
renderer.setInScroll(true);
setChartSettings(renderer);
return renderer;
}
private void setChartSettings(XYMultipleSeriesRenderer renderer)
{
renderer.setChartTitle("Chart demo");
renderer.setXTitle("x values");
renderer.setYTitle("y values");
renderer.setApplyBackgroundColor(false);
renderer.setRange(new double[] {0,200,0,200});
renderer.setFitLegend(false);
renderer.setAxesColor(Color.BLACK);
renderer.setMarginsColor(Color.WHITE);
renderer.setLabelsColor(Color.BLACK);
renderer.setShowGrid(true);
renderer.setXAxisMin(0);
renderer.setXAxisMax(200);
renderer.setYAxisMin(0);
renderer.setZoomEnabled(false);
renderer.setYAxisMax(200);
}
...
rpmGraph = ChartFactory.getLineChartView(getActivity(), getDemoDataset(), getDemoRenderer());
LinearLayout layout = (LinearLayout) getActivity().findViewById(R.id.rpmGraph);
layout.addView(rpmGraph);
Question in short is how I could get the panning to work properly vertically in a scrollview?