如何在填充式折线图上方绘制网格线?
解决折线图填充区域覆盖网格线的问题
你遇到的问题是折线图填充层默认绘制在网格线之上,导致网格线被遮挡。直接调用setDrawGridLines(true)只会控制网格线是否显示,无法调整层级,要让网格线显示在填充区域上方,需要调整绘制顺序或层级:
方案一:自定义渲染器调整绘制顺序
以MPAndroidChart为例,通过自定义LineChartRenderer,修改绘制逻辑,先画填充区域再画网格线:
public class CustomLineRenderer extends LineChartRenderer { public CustomLineRenderer(LineDataProvider chart, ChartAnimator animator, ViewPortHandler viewPortHandler) { super(chart, animator, viewPortHandler); } @Override public void drawExtras(Canvas c) { // 先绘制填充区域 super.drawExtras(c); // 再绘制X轴和Y轴的网格线 mXAxisRenderer.renderGridLines(c); mYAxisRenderer.renderGridLines(c); } }
将自定义渲染器设置给图表:
LineChart lineChart = findViewById(R.id.your_line_chart); lineChart.setRenderer(new CustomLineRenderer(lineChart, lineChart.getAnimator(), lineChart.getViewPortHandler()));
方案二:提升网格线的绘制层级
通过设置网格线Paint的Z轴值,让它在填充区域之上渲染:
// 获取Y轴(同理可设置X轴) YAxis leftAxis = lineChart.getAxisLeft(); leftAxis.setDrawGridLines(true); // 设置Z值,数值越大层级越高 leftAxis.getGridPaint().setZ(15); // 如果需要X轴网格线同理 XAxis xAxis = lineChart.getXAxis(); xAxis.setDrawGridLines(true); xAxis.getGridPaint().setZ(15);
这样就能让网格线穿透填充区域显示出来了。
内容的提问来源于stack exchange,提问作者jlsogorb
相关产品推荐
相关产品推荐

