如何在Xamarin.Android中使用MPAndroidChart的ValueFormatter

本文关键字:MPAndroidChart ValueFormatter Xamarin Android | 更新日期: 2023-09-27 17:55:57

我正在使用NuGet包MpAndroidChart。

在爪哇中,

public class MyValueFormatter implements ValueFormatter {
    private DecimalFormat mFormat;
    public MyValueFormatter() {
        mFormat = new DecimalFormat("###,###,##0.0"); // use one decimal
    }
    @Override
    public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
        // write your logic here
        return mFormat.format(value) + " $"; // e.g. append a dollar-sign
    }
}

我尝试实现 ValueFormatter,但该包不包含名为 ValueFormatter 的接口

如何在 C# 中实现这一点?

编辑:

谢谢你的回答,但是我如何使用这个,我试过了

QuestionFormatter formatter = new QuestionFormatter();
            chart.AxisLeft.ValueFormatter = (IYAxisValueFormatter) formatter;

但是我收到无效的投射异常

如何在Xamarin.Android中使用MPAndroidChart的ValueFormatter

> IValueFormatter 位于 MikePhil.Charting.Formatter 命名空间

用:

using MikePhil.Charting.Formatter;

例:

public class CustomFormatter : IValueFormatter
{
    public IntPtr Handle
    {
        get
        {
            throw new NotImplementedException();
        }
    }
    public void Dispose()
    {
        throw new NotImplementedException();
    }
    public string GetFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler)
    {
        throw new NotImplementedException();
    }
}

注意:当然,您需要使用自己的代码实现这些方法;-)

更新:

public class CustomYFormatter : IYAxisValueFormatter
{
    public IntPtr Handle
    {
        get
        {
            throw new NotImplementedException();
        }
    }
    public void Dispose()
    {
        throw new NotImplementedException();
    }
    public string GetFormattedValue(float value, YAxis yAxis)
    {
        throw new NotImplementedException();
    }
}

除了@SushiHangover的答案之外,在实现Java接口时,您还必须从Java.Lang.Object继承,然后句柄属性和dispose方法由基类为您处理,您只需编写格式化方法即可

public class MyValueFormatter : Java.Lang.Object, IValueFormatter
{
    public string GetFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler)
    {
        return value.ToString("F0");
    }
}