带有碎片的Xamarin Android微图

时间:2017-11-13 07:06:44

标签: c# charts xamarin.android visual-studio-2017

我试图将图表添加到我的Xamarin Android应用程序(Visual Studio 2017) 我关注了此存储库MicroChartsPost

我在我的应用程序中使用了导航抽屉。所以我使用片段添加我的代码。上面提到的存储库是针对Xamarin.Forms跨平台的。但我只是使用Xamarin.Android。

我有一个Xamarin.Android存储库here。 任何帮助将受到高度赞赏。谢谢

1 个答案:

答案 0 :(得分:1)

您可以参考:https://github.com/aloisdeniel/Microcharts

以下是有关如何在BarChart中使用Fragment的简单演示:

首先,将其添加到您的UI MGradesView.axml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
  <LinearLayout
      android:orientation="vertical"
      android:layout_width="match_parent"
      android:layout_height="wrap_content">
    <microcharts.droid.ChartView
        android:id="@+id/chartView"
        android:layout_width="match_parent"
        android:layout_height="160dp" />
  </LinearLayout>
</ScrollView>

其次,您的图表需要一组数据条目:

var entries = new[]
{
    new Entry(200)
    {
        Label = "January",
        ValueLabel = "200",
        Color = SKColor.Parse("#266489")
    },
    new Entry(400)
    {
        Label = "February",
        ValueLabel = "400",
        Color = SKColor.Parse("#68B9C0")
    },
    new Entry(-100)
    {
        Label = "March",
        ValueLabel = "-100",
        Color = SKColor.Parse("#90D585")
    }
};

第三,从这些条目中实现图表:

var chart = new BarChart() { Entries = entries };

像这样修改你的MGradeFragment.cs

public class MGradeFragment : Fragment
{
    public override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
    }

    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        SetHasOptionsMenu(true);

        View view = LayoutInflater.From(Activity).Inflate(Resource.Layout.MGradesView, null);

        var entries = new[]
        {
            new Entry(200)
            {
                Label = "January",
                ValueLabel = "200",
                Color = SKColor.Parse("#266489")
            },
            new Entry(400)
            {
                Label = "February",
                ValueLabel = "400",
                Color = SKColor.Parse("#68B9C0")
            },
            new Entry(-100)
            {
                Label = "March",
                ValueLabel = "-100",
                Color = SKColor.Parse("#90D585")
            }
        };
        var chart = new BarChart() { Entries = entries };

        var chartView = view.FindViewById<ChartView>(Resource.Id.chartView);
        chartView.Chart = chart;

        return view;
    }

    public override void OnCreateOptionsMenu(IMenu menu, MenuInflater inflater)
    {
        inflater.Inflate(Resource.Menu.menu_MGradeToolbar, menu);
    }
}