Android 默认情况下在MpChart中显示标记视图

Android 默认情况下在MpChart中显示标记视图,android,mpandroidchart,Android,Mpandroidchart,我正在使用MpChart的折线图来显示我的图表。我添加了多个数据集行。一切正常。但是,我想将标记视图设置为中间的某个点,默认情况下应该是可见的。现在,标记视图只有在我触摸它时才可见。有什么方法可以做到这一点吗 初始图 触摸图形后显示Markerview 有帮助吗 for (IDataSet set : mChart.getData().getDataSets()) set.setDrawValues(true); mChart.invalidate(); 在库中没有执行此操作的默

我正在使用MpChart的折线图来显示我的图表。我添加了多个数据集行。一切正常。但是,我想将<强>标记视图设置为中间的某个点,默认情况下应该是可见的。现在,标记视图只有在我触摸它时才可见。有什么方法可以做到这一点吗

初始图

触摸图形后显示Markerview

有帮助吗

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 });