当我添加一个具有不同数据类型(%)的新集合时,我正在将右轴格式化程序更新为另一个。之后,我正在更新LineData并在图表上调用invalidate()。 看起来很标准,但效果如下:
这里是代码:(在继承自LineChart的类的范围内)
override fun setData(data: LineData, xAxisFormatter: IAxisValueFormatter?, leftAxisFormatter: IAxisValueFormatter?, rightAxisFormatter: IAxisValueFormatter?) {
xAxisFormatter?.let { xAxis.valueFormatter = it }
leftAxisFormatter?.let { axisLeft.valueFormatter = it }
rightAxisFormatter?.let { axisRight.valueFormatter = it }
this.data = data
invalidate()
}
更新后的底部是一个。可以发现正确的间距差异吗?这很烦人,打破了UX :( 知道为什么吗?
答案 0 :(得分:0)
我发现,这个额外的间距是由lib计算的。它从整个图表范围内的标签的最大可能宽度开始。在这种情况下,图表中的最大值为732000,带有该值的%label看起来像“73200000%” - 它会占用大量空间,因此间距很大......这个值的另一个原因是其他轴,但我认为这是一个库错误。
我通过更新右轴标签格式化程序来处理它,以智能方式处理大数字,因此计算的字符串可以更短。它有点帮助。