tl; dr Sie können dies tun, indem Sie die Etikettenanzahl in onChartScale
ändern.
Zuerst möchten Sie Ihre Zuhörer ein:
chart.setOnChartGestureListener(this); // set a listener ;)
Sie versuchen, die oben/unten gezogen Werte zu erhalten und überprüfen, was auf dem Bildschirm gezeichnet wird. Wenden Sie einige grundlegende Berechnungen an und Sie sind fertig.
wird der folgende Code 2 Etiketten zeichnen, wenn die Zoomstufe (zu) hoch und bis zu 9 sonst bekommt:
@Override
public void onChartScale(MotionEvent me, float scaleX, float scaleY) {
final YAxis yAxis = mChart.getAxisLeft();
final Transformer transformer = mChart.getTransformer(YAxis.AxisDependency.LEFT);
// ...minor dirty hack
final PointD top = transformer.getValuesByTouchPoint(0, 0);
final PointD bottom = transformer.getValuesByTouchPoint(0, mChart.getHeight());
final int diff = (int)(top.y - bottom.y);
// draw 2-9 axis labels
final int count = Math.min(9, Math.max(diff, 2));
Log.d("scale", String.format("scale %f: diff %d and count %d", scaleY, diff, count));
// "force" the count, for there are drawing issues where none get drawn on high zoom levels (just try it out)
yAxis.setLabelCount(count, true);
}
// todo implement other interface methods
Der Wert Formatierer und alles andere bleibt gleich.
Und einige hässliche Screenshot zu zeigen, dass es funktioniert: D

eingestellten Grenzwert mit max Wert für x und y –
ich in iOS denken ist in der letzten Version behoben, mit chart.getViewPortHandler(). setMaximumScaleX (4f); . chart.getViewPortHandler() setMaximumScaleY (4f); Aber es funktioniert immer noch nicht in Android – rguerra