【问题标题】:Xamarin Android Microcharts with Fragments带有片段的 Xamarin Android 微图
【发布时间】:2017-11-13 07:06:43
【问题描述】:

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

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

我有一个 Xamarin.Android 存储库 here。 任何帮助将不胜感激。谢谢

【问题讨论】:

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


    【解决方案1】:

    你可以参考这个:https://github.com/aloisdeniel/Microcharts

    这是一个关于如何在您的Fragment 中使用BarChart 的简单演示:

    首先,将其添加到您的UIMGradesView.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);
        }
    }
    

    【讨论】:

    • @york-shen-msft 它在 LineChart 中不起作用吗? (所有其他图表类型都在工作)当我尝试将其更改为 LineChart 时,它会给出异常“发生未处理的异常”。我的代码更改 var chart = new LineChart() { Entries = entries };
    • @Chindara,应该可以了,您介意打开一个新问题并发布更完整的消息吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多