安卓MPAndroidChart图表Y坐标标签文字在图标内显示
这里以combinedchart为例子
这里首先初始化一个图表
CombinedChart combinedchart = (CombinedChart)view.findViewById(R.id.stock_chart);
下面我们获取Y坐标
axisLeftK = combinedchart.getAxisLeft();
设置Y轴位置偏移量
axisLeftK.setYOffset(-7);
最后我们要修改MPAndroidChart的源码我这里的MPAndroidChart版本为2.4版本
修改源码位置com.github.mikephil.charting.renderer.YAxisRenderer 的drawYLabels函数
源码为:
/** * draws the y-labels on the specified x-position * * @param fixedPosition * @param positions */ protected void drawYLabels(Canvas c, float fixedPosition, float[] positions, float offset) { // draw for (int i = 0; i < mYAxis.mEntryCount; i++) { String text = mYAxis.getFormattedLabel(i); if (!mYAxis.isDrawTopYLabelEntryEnabled() && i >= mYAxis.mEntryCount - 1) return; c.drawText(text, fixedPosition, positions[i * 2 + 1] + offset, mAxisLabelPaint); } }
这是修改后的源码:
/**
* draws the y-labels on the specified x-position
*
* @param fixedPosition
* @param positions
*/
protected void drawYLabels(Canvas c, float fixedPosition, float[] positions, float offset) {
// draw
for (int i = 0; i < mYAxis.mEntryCount; i++) {
String text = mYAxis.getFormattedLabel(i);
if (!mYAxis.isDrawTopYLabelEntryEnabled() && i >= mYAxis.mEntryCount - 1)
return;
if(i==mYAxis.mEntryCount-1) {
//为了让最上面的Y轴lable value显示到图表里面 修改源码2016-09-22 18:46:57
offset=Utils.calcTextHeight(mAxisLabelPaint, "A") / 1.5f +Math.abs(offset);
}
c.drawText(text, fixedPosition, positions[i * 2 + 1] + offset, mAxisLabelPaint);
}
}
这里我们取了设置Y轴位置偏移量的绝对值,当然你也可以自己测试看怎么能达到你的效果
看最后效果
可以看到数字标签全部在图表内了!其他柱状图,折线图....都是可以如此修改!