Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 是否可以限制MPA图表中X轴上绘制的限制线的高度?_Android_Mpandroidchart - Fatal编程技术网

Android 是否可以限制MPA图表中X轴上绘制的限制线的高度?

Android 是否可以限制MPA图表中X轴上绘制的限制线的高度?,android,mpandroidchart,Android,Mpandroidchart,我正在使用MPAndroidChart库绘制带有两个Y轴的折线图,以显示不同值的两个图形。我只想显示这两张图之间的界限。如果可以,那么如何实现?可以。您应该扩展XAxisRenderer类并重写必要的方法 public class CustomXAxisRenderer extends XAxisRenderer { private float[] mLimitLineSegmentsBuffer = new float[4]; private Path mLimitLinePath = ne

我正在使用MPAndroidChart库绘制带有两个Y轴的折线图,以显示不同值的两个图形。我只想显示这两张图之间的界限。如果可以,那么如何实现?

可以。您应该扩展XAxisRenderer类并重写必要的方法

public class CustomXAxisRenderer extends XAxisRenderer {

private float[] mLimitLineSegmentsBuffer = new float[4];
private Path mLimitLinePath = new Path();
private float topOffset;
private float bottomOffset;


public CustomXAxisRenderer(ViewPortHandler viewPortHandler, XAxis xAxis, Transformer trans) {
    super(viewPortHandler, xAxis, trans);
}

@Override
public void renderLimitLines(Canvas c) {

    List<LimitLine> limitLines = mXAxis.getLimitLines();

    if (limitLines == null || limitLines.size() <= 0)
        return;

    float[] position = mRenderLimitLinesBuffer;
    position[0] = 0;
    position[1] = 0;

    for (int i = 0; i < limitLines.size(); i++) {

        LimitLine l = limitLines.get(i);

        if (!l.isEnabled())
            continue;

        int clipRestoreCount = c.save();
        mLimitLineClippingRect.set(mViewPortHandler.getContentRect());
        mLimitLineClippingRect.inset(-l.getLineWidth(), 0.f);
        c.clipRect(mLimitLineClippingRect);

        position[0] = l.getLimit();
        position[1] = 0.f;

        mTrans.pointValuesToPixel(position);

        //Here you can count your offsets
        // topOffset = ... ;
        // bottomOffset = ...;

        renderLimitLineLine(c, l, position);
        renderLimitLineLabel(c, l, position, yOffset);

        c.restoreToCount(clipRestoreCount);
    }
}

@Override
public void renderLimitLineLine(Canvas c, LimitLine limitLine, float[] position) {
    mLimitLineSegmentsBuffer[0] = position[0];

    // Here, the offsets will be applied 
    mLimitLineSegmentsBuffer[1] = mViewPortHandler.contentTop() + topOffset;
    mLimitLineSegmentsBuffer[2] = position[0];
    mLimitLineSegmentsBuffer[3] = mViewPortHandler.contentBottom() - bottomOffset;

    mLimitLinePath.reset();
    mLimitLinePath.moveTo(mLimitLineSegmentsBuffer[0], mLimitLineSegmentsBuffer[1]);
    mLimitLinePath.lineTo(mLimitLineSegmentsBuffer[2], mLimitLineSegmentsBuffer[3]);

    mLimitLinePaint.setStyle(Paint.Style.STROKE);
    mLimitLinePaint.setColor(limitLine.getLineColor());
    mLimitLinePaint.setStrokeWidth(limitLine.getLineWidth());
    mLimitLinePaint.setPathEffect(limitLine.getDashPathEffect());

    c.drawPath(mLimitLinePath, mLimitLinePaint);
}

这回答了你的问题吗?如果没有,请尝试自己,并在遇到问题时询问有关API的特定问题。MPAndroidChart问题只是一张带有一组需求的图片,与Android带有一张布局图片和一组需求的问题一样,都是离题的。
  mGraph.setXAxisRenderer(new CustomXAxisRenderer(mGraph.getViewPortHandler()
                , mGraph.getXAxis(), 
  mGraph.getTransformer(YAxis.AxisDependency.LEFT)));