【问题标题】:Using ValueFormatter in MP Chart but it does not taking effect在 MP Chart 中使用 ValueFormatter 但它没有生效
【发布时间】:2021-12-28 14:11:53
【问题描述】:

在 Android 中使用 MP 图表。参考:https://github.com/PhilJay/MPAndroidChart

我必须在 BAR 图表上将 30.8351 显示为 30.83

所以我发现我们可以使用 MP Chart 中的 Value Formater 来做到这一点。

所以我为它创建了如下类:

class MyValueFormatter : ValueFormatter() {
override fun getFormattedValue(
    value: Float,
    entry: Entry,
    dataSetIndex: Int,
    viewPortHandler: ViewPortHandler
): String {
    var mFormat : DecimalFormat=DecimalFormat("###,###,##0.0")
    return mFormat.format(value) + " $"
 }
}

然后将其设置为我的图表数据集,如下所示:

val set1: BarDataSet
set1.setValueFormatter(MyValueFormatter())

但仍然在条形图上方显示 30.8351 而不是 30.83,即作为 BAR 的值。

可能是什么问题?

JEEL 回答后在下方编辑

我现在已经使用了如下的Value Formator:

set1.valueFormatter= object : ValueFormatter() {
                    override fun getFormattedValue(value: Float): String {
                        var mFormat : DecimalFormat = DecimalFormat("##.##")
                        return mFormat.format(value)
                    }
                }

但是对于 -0.594 的值,我得到 -0.6 它应该只是 -0.59

对于 1.234,它是 1.23(好的)

但是对于 1.235,它是 1.24(不可以) - 它不应该对值进行四舍五入。

可能是什么问题?

【问题讨论】:

  • 尝试使用 DecimalFormat("#.##")
  • DecimalFormat 没有任何问题。我自己尝试过,似乎返回了预期的结果。我不熟悉 MP Chart,但在我看来它不使用 ValueFormatter
  • @MohitDholakia 不工作。
  • @IvoBeckers 不工作

标签: android kotlin charts mpandroidchart formatter


【解决方案1】:

根据 MPAndroidChart 3.1.0 版本,

您使用的ValueFormatter 方法已弃用。

为了使用格式化值,要么根据图形类型使用特定方法,要么使用通用方法getFormattedValue(float value)(单参数方法)


根据文档here,不推荐使用 O.P. 中使用的方法,这可能是格式化程序无法处理图表的原因。

您应该将getBarLable(BarEntry barEntry) 用于条形图,或者通常使用getFormattedValue(float value) 来格式化标签。

关注this document了解更多信息。

【讨论】:

  • 编辑了问题。请检查。
【解决方案2】:

注意:不要使用已弃用的方法。 (根据上述 Jeel 的回答。)

这是值四舍五入的问题。最终完成如下:

df.roundingMode = RoundingMode.CEILING

     set1.valueFormatter= object : ValueFormatter() {
     override fun getFormattedValue(value: Float): String {
                val df = DecimalFormat("##.##");
                df.roundingMode = RoundingMode.CEILING
                return df.format(value)
             }
           }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多