android - 在 BarChart MPAndroidChart 条形图外垂直旋转值文本

标签 android charts mpandroidchart

BarChart MPAndroidChart 栏外垂直旋转值文本

我可以旋转文本,但它会进入栏内,这是我使用以下代码实现的:

chart.setRenderer(CustomBarChartRenderer(context, this, this.getAnimator(), this.getViewPortHandler()))

public class CustomBarChartRenderer extends BarChartRenderer {
      public CustomBarChartRenderer(BarDataProvider chart, 
                                    ChartAnimator animator, ViewPortHandler viewPortHandler) {
           super(chart, animator, viewPortHandler);
      }

      @Override
      public void drawValue(Canvas canvas, IValueFormatter formatter, 
                            float value, Entry entry, int dataSetIndex, float x, float y, int color) {
           mValuePaint.setColor(color);

           canvas.save();
           canvas.rotate(-90);

           canvas.drawText(formatter.getFormattedValue(value, entry, 
                                                       dataSetIndex, mViewPortHandler), x, y, mValuePaint);
           canvas.restore();
      }
}

文本已旋转但出现在栏内可以在下面的图片链接中看到:

如何使文本值正确对齐到栏上方??

最佳答案

我可以通过向上移动标签来修复它。

值得注意的是,当我们旋转标签时,x 和 y 尺寸会在内部发生变化,因此要向上移动标签,您必须增加 x 值而不是 y 值。

另请注意,要使其动态化并适用于所有文本长度,我正在计算要显示的文本的像素大小,并将标签仅向上移动该像素大小。请参见下面的代码(在 kotlin 中):

override fun drawValue(c: Canvas, formatter: IValueFormatter, value: Float, entry: Entry, dataSetIndex: Int, x: Float, y: Float, color: Int) {
    mValuePaint.color = Color.WHITE
    val text = formatter.getFormattedValue(value, entry, dataSetIndex, mViewPortHandler)

    c.save()
    val width = mValuePaint.measureText(text)
    c.rotate(-90f, x, y)

    c.drawText(text, x + (width / 2), y, mValuePaint)
    c.restore()
}

关于android - 在 BarChart MPAndroidChart 条形图外垂直旋转值文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56289780/

相关文章:

java - 如何在android中比较两个日期和时间

android - mpandroidchart 中折线图的滚动完成监听器

maven - 无法解析类 com.github.mikephil.charting.charts.BarChart、MPAndroidChart

java - Android定制条形图

extjs 4折线图渲染问题

css - 如何在 React App 中使用::before CSS 伪选择器修改 Font Awesome 图标?

android - 使用 MPAndroidChart 在条形图中的时间轴轴上绘制数据值

java - 棋盘游戏逻辑的持久套接字 (Android)

android - 在 Firebase-Android 中使用 orderByChild-equalsTo 获取 child

java - 如何从单个文件保存多个对象?