0

我正在尝试在 Android 上以编程方式(通过单独的按钮)在 Shinobi Chart 上显示十字准线,但无法找到方法。我已经看到了基本上涉及在 chart.Crosshair 上调用 moveToFloatingPosition的iOS 方式。

我最接近的是在 Chart.Crosshair 上调用 Focus,但 IsActive 和 IsShown 是错误的,直到我长按图表。我假设这是因为 TrackedSeries 为空,所以也许有办法以编程方式设置 TrackedSeries?

shinobiChart.Crosshair.Style.LineColor = Color.Fuchsia.ToAndroid();
shinobiChart.Crosshair.CrosshairMode = Crosshair.Mode.SingleSeries;
lineSeries.CrosshairEnabled = true;
shinobiChart.Crosshair.Focus = lineSeries.DataAdapter.Get(500);  // arbitrary DataPoint - it's in the middle of the chart
shinobiChart.RedrawChart();
4

1 回答 1

2

在 Android 版本的shinobicharts中,API 不允许以编程方式显示Crosshair- 这必须通过用户手势(特别是长按)来完成。

您可以做的是利用 Android SDK 中的MotionEvent API。这允许您以编程方式创建用户手势,因此您可以在图表上“执行”长按以显示Crosshair.

您使用gain() 方法来创建MotionEvents- 此方法有许多重载,因此请查看文档以查看哪个最适合您的需求,但上面链接的那个是最简单的。

此外,您可以使用Axis类上的转换方法将数据值转换为像素值,这可能有助于确保您MotionEvent直接在绘图区域上执行。请参阅Axis.getPixelValueForUserValue()。请注意,此方法只会在图表布局后返回有效结果(但当您通过按下按钮执行此操作时,这应该不是问题)。

我很欣赏这有点繁琐;您必须管理“触摸手势”并确保您不会在屏幕上永久“按下”,但总的来说它非常简单。程序化控制Crosshair绝对是之前要求的,因此在我们的产品路线图上,虽然在这个阶段我不能说这个功能什么时候可用。

全面披露 - 我为shinobicontrols工作

于 2015-10-19T09:18:00.157 回答