在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();
}
}文本是旋转的,但出现在下面的图像链接中的栏中:

如何使文本值在栏上正确对齐??
发布于 2019-05-27 20:26:51
我可以通过向上移动标签来修复它。
值得注意的是,当我们旋转标签时,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()
}https://stackoverflow.com/questions/56289780
复制相似问题