Android 默认情况下在MpChart中显示标记视图
我正在使用MpChart的折线图来显示我的图表。我添加了多个数据集行。一切正常。但是,我想将<强>标记视图设置为中间的某个点,默认情况下应该是可见的。现在,标记视图只有在我触摸它时才可见。有什么方法可以做到这一点吗 初始图 触摸图形后显示Markerview 有帮助吗Android 默认情况下在MpChart中显示标记视图,android,mpandroidchart,Android,Mpandroidchart,我正在使用MpChart的折线图来显示我的图表。我添加了多个数据集行。一切正常。但是,我想将标记视图设置为中间的某个点,默认情况下应该是可见的。现在,标记视图只有在我触摸它时才可见。有什么方法可以做到这一点吗 初始图 触摸图形后显示Markerview 有帮助吗 for (IDataSet set : mChart.getData().getDataSets()) set.setDrawValues(true); mChart.invalidate(); 在库中没有执行此操作的默
for (IDataSet set : mChart.getData().getDataSets())
set.setDrawValues(true);
mChart.invalidate();
在库中没有执行此操作的默认实现。 一种方法是修改库中的LineChartRenderer类。MpAndroidCharts允许您在打印的点上绘制圆,您可以通过为LineChartEntry定义新的构造函数并向其传递位图来修改它。然后可以在打印点而不是绘制的圆处绘制位图
ArrayList<Entry> values = new ArrayList<Entry>();
Drawable d;
for (int i = 0; i < dataList.size(); i++) {
LineChartData data = dataList.get(i);
float val = Float.valueOf(Utils.decimalValuePrecisionTwoPlaces((float) data.getDataVolGallon()));
if (data.getImageIndex() >= 0) {
d = ContextCompat.getDrawable(getContext(), resIcon[data.getImageIndex()]);
bitmap = ((BitmapDrawable) d).getBitmap();
bitmap = Bitmap.createScaledBitmap(bitmap, bitmap.getWidth() / 2, bitmap.getHeight() / 2, false);
values.add(new Entry(i, val, bitmap));
} else {
values.add(new Entry(i, val));
}
}
这是从位图绘制图像的代码,只需在LineChartRenderer的drawCircles()中注释要绘制圆的线,然后使用此代码即可
如果您有任何问题,请留言。希望这对您有所帮助 我已经在这个库的IOS版本中完成了这项工作。但正如文档所说,它们几乎相同,所以我希望我的答案是正确的“翻译”。 我所做的是得到一个点,您的默认标记将始终显示 默认点是应该锁定的标记,根据HighestVisibleX或其他内容定义自己的点 然后在第一次渲染时,我高亮显示这一点:
Highlight myFirstRenderedHighlight = new Highlight(myLockedMarkerPoint.x, 0);
someChart.highlightValues(new Highlight[] { myFirstRenderedHighlight });
因此,如果你总是想在沿x轴拖动时显示该点,那么你需要重新绘制高光。这可以通过在chartTranslation上侦听来完成,这可以通过在ChartGestureListener上实现接口来完成。onChartTranslate(),示例:
// same logic as picking first point with HighestVisibleX or something
Highlight movingHighlight = new Highlight(entryInLockedPoint.x,0);
someChart.highlightValues(new Highlight[] { movingHighlight });
如果要标记多个图形,请从图表数据集中进行选择。
希望这就是你想要的:)
// same logic as picking first point with HighestVisibleX or something
Highlight movingHighlight = new Highlight(entryInLockedPoint.x,0);
someChart.highlightValues(new Highlight[] { movingHighlight });