如何在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;
但是我收到无效的投射异常
> 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");
}
}