Я пытаюсь рисовать цвета между лимитными линиями в LineChart, расширяя класс LineChart и переопределяя метод onDraw. Я делаю это, как показано в https://github.com/PhilJay/MPAndroidChart/issues/485, где цветные прямоугольники просто рисуются на холсте:
public class CustomLineChart extends LineChart {
protected Paint mYAxisZonePaint;
protected String[] arrayColors = {"#FFFFFF","#F4D03F","#F5B041","#EB984E","#DC7633"};
@Override
protected void init() {
super.init();
mYAxisZonePaint = new Paint();
mYAxisZonePaint.setStyle(Paint.Style.FILL);
}
@Override
protected void onDraw(Canvas canvas) {
List<LimitLine> limitLines = mAxisLeft.getLimitLines();
if (limitLines == null || limitLines.size() < 4){
super.onDraw(canvas);
return;
}
float[] pts = new float[2];
float startPts = 0;
for (int i = 0; i < limitLines.size(); i++) {
pts[0] = limitLines.get(i).getLimit();
pts[1] = startPts;
mLeftAxisTransformer.pointValuesToPixel(pts);
mYAxisZonePaint.setColor(Color.parseColor(arrayColors[i]));
canvas.drawRect(mViewPortHandler.contentLeft(), pts[1], mViewPortHandler.contentRight(), pts[0], mYAxisZonePaint);
startPts = limitLines.get(i).getLimit();
}
super.onDraw(canvas);
}
}
С помощью приведенного выше кода я могу нарисовать цветные прямоугольники в качестве фона за данными налинейный график, как показано здесь
Однако, когда я прокручиваю по оси Y, прямоугольники будут «перетекать» в область, где нарисованы метки оси X, как показано в этомimage
Как мне нарисовать цветной фон, чтобы он не окрашивал область, где нарисованы метки оси X, подобно тому, как обрезаются данные линии и предельные линиичуть выше оси X?