首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在BarChart MPAndroidChart中将值文本垂直旋转到栏外

在BarChart MPAndroidChart中将值文本垂直旋转到栏外
EN

Stack Overflow用户
提问于 2019-05-24 17:35:25
回答 1查看 346关注 0票数 3

BarChart MPAndroidChart中将值文本垂直旋转到栏外

我可以旋转文本,但它位于栏中,这是我使用以下代码实现的:

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

代码语言:javascript
运行
复制
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();
      }
}

文本是旋转的,但出现在下面的图像链接中的栏中:

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-27 20:26:51

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

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

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

代码语言:javascript
运行
复制
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()
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56289780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档