我想画一张图表。我找到了AChartEngine库,但它只在java中进行了演示。
我使用demo作为示例进行了Main.axml。如果我理解它是正确的, LinearLayour 将是图表。当我开始实现主代码时,我偶然发现了一个问题:
private IDemoChart[] mCharts = new IDemoChart[]
其中IDemoChart
接口。
但C#无法从界面创建对象。
另外,我不知道如何将此图表分配给LinearLayout
Main.axml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="add_values"
android:id="@+id/topText" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="x"
android:padding="5dip" />
<EditText
android:inputType="number"
android:layout_width="71.5dp"
android:layout_height="match_parent"
android:id="@+id/xValue"
android:layout_marginRight="35.5dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="y"
android:padding="5dip" />
<EditText
android:inputType="number"
android:layout_width="83.0dp"
android:layout_height="wrap_content"
android:id="@+id/yValue"
android:layout_marginLeft="0.0dp"
android:layout_marginRight="51.5dp" />
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/add"
android:layout_marginLeft="5dp" />
</LinearLayout>
<LinearLayout
android:id="@+id/chart"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/new_series"
android:text="new_series"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
MainActivity.cs
using Android.App;
using Android.Widget;
using Android.OS;
using AChartEngine.Charts;
using AChartEngine.Models;
using AChartEngine.Renderers;
using AChartEngine;
namespace ChartsAChartEngine
{
[Activity(Label = "ChartsAChartEngine", MainLauncher = true)]
public class MainActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
TextView topText = FindViewById<TextView>(Resource.Id.topText);
EditText editTextX = FindViewById<EditText>(Resource.Id.xValue);
EditText editTextY = FindViewById<EditText>(Resource.Id.yValue);
Button translateButton = FindViewById<Button>(Resource.Id.add);
LinearLayout linearLayoutChart = FindViewById<LinearLayout>(Resource.Id.chart);
var dataSetXY = new XYMultipleSeriesDataset();
var series = new XYSeries("test");
series.Add(0, 0);
series.Add(1, 1);
series.Add(2, 2);
dataSetXY.AddSeries(series);
var renderer = new XYMultipleSeriesRenderer();
var lineChart = new LineChart(dataSetXY,renderer);
var view = new GraphicalView(this,lineChart); // how to draw this?
}
}
}
答案 0 :(得分:0)
显然AChartsEngine是专为Java语言的Android应用程序而设计的,因此它在Xamarin C#中运行良好...
我建议你使用另一个插件,到目前为止我找到的最好的插件是这个:
https://blog.xamarin.com/microcharts-elegant-cross-platform-charts-for-any-app/
它很棒,适用于Android,iOS和Windows Phone,全部用于c#和Xamarin
的 --- --- EDIT 强>
NuGet包使用它:
https://www.nuget.org/packages/Microcharts.Forms/0.8.3-pre(释放前)
OR
https://www.nuget.org/packages/Microcharts.Forms/0.7.1
它还需要另一个插件:SkiaSharp,但它会在安装Microcharts时自动安装。
拥有最新版本的Xamarin.Forms非常重要。