MPDandroidChart中的chart.setData(lineData)是否会更改LineDataSet状态?

soat7uwm  于 2023-06-04  发布在  Android
关注(0)|答案(1)|浏览(205)

我有一个奇怪的行为发生在我身上,我有一个独特的LineDataSet示例跨2个不同的图表使用。此LineDataSet在进入任何一个图表之前获取其配置。
两个图表的尺寸相似。
但是其中一个是由Android框架调整大小的。
当视图被膨胀并添加到不同大小的容器时,就会发生这种调整。
在这种情况下,容器是一个FrameLayout,它比原始图表高度小100dp,比原始match_parent宽度小0.85%。
这就是发生的事。。
当接收LineDataSet的第一个图表是调整了大小/较小的图表时。
LineDataSet文本和行大小...看起来很正常我会说...不大不小。
当这个相同的数据集用于第二个更大的图表时,行文本和行大小与第一个图表完全相同...
现在,如果第一个接收LineDataSet的图表是BIGGER图表,则线条和文本看起来非常小。
在将.setData()添加到这个图表之后,我接着将.setData()添加到第二个较小的图表...这条线看起来和第一张图完全一样每一行每一个字都很小。
该效果似乎也发生在BEZIER_CURVE选项的平滑度中,因为它看起来比BEZIER看起来更尖锐。
作为参考,这是20 f .setValueTextSize(在大图表中首先输入数据时的样子(这是调整大小/较小图表的透视图):

这是当调整大小/更小的图表首先馈送时20 f的外观(这是调整大小/更小的图表的透视图):

这是大小为9 f的文本,当首先输入大图表时(这是大图表的透视图):

这是当大图表首先输入9 f的文本时的小/调整大小的图表:

当9 f首先馈送到较小/调整大小的图表时...一切正常。
这种情况也发生在不同的Android版本上。
这是Android的问题,还是因为数据集在自己内部保存了一些大小参数?

rm5edbpk

rm5edbpk1#

这个问题的出现是因为LineDataSet甚至在Chart初始化之前就已经构建了,因此,一个名为“mMetrics”的私有静态字段类型为DisplayMetrics.class。(帮助将浮点数转换为与设备显示度量匹配的值的类)未被初始化。
我的解决办法是打电话:

Utils.init(getApplication());

在一个我肯定会被召唤的地方。

相关问题