安卓MPAndroidChart图表Y坐标标签文字在图表内显示

安卓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轴位置偏移量的绝对值,当然你也可以自己测试看怎么能达到你的效果

 

看最后效果

171456_Hvju_867520.png

可以看到数字标签全部在图表内了!其他柱状图,折线图....都是可以如此修改!

转载于:https://my.oschina.net/Thinkeryjgfn/blog/761359

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值