MPAndroidChart MarkerView

时间:2015-12-23 07:27:48

标签: android mpandroidchart

我打算在MPAndroidChart的折线图中查找特定点,然后显示标记以在按下按钮后突出显示该点。给出的示例是标记仅在触摸事件后显示,在我的情况下是不同的。我试过下面的代码,但没有用,有人可以教我,我会很感激。

Highlight h = new Highlight((int) valIndex, linechart2.getData().getDataSetCount());
        linechart2.highlightValue(h, true);
mv2.refreshContent2(valueYAxis.get((int) valIndex), h);
linechart2.getMarkerView();
linechart2.setDrawMarkerViews(true);
linechart2.getData().setHighlightEnabled(true);
//        RefreshChart();
linechart2.invalidate();

3 个答案:

答案 0 :(得分:1)

您可以使用Chart对象上的以下方法之一,以编程方式轻松突出显示值:

  • highlightValues(Highlight[] highs):突出显示给定DataSet中给定索引的值。提供null或空数组以撤消所有突出显示。
  • highlightValue(int xIndex, int dataSetIndex):突出显示给定DataSet中给定x-index的值。提供-1作为x-index或dataSetIndex以撤消所有突出显示。

全部都在wiki

答案 1 :(得分:1)

制造商视图会在点突出显示时显示,因此您可以尝试此

Highlight h = new Highlight((int) valIndex, 0);
mv2.refreshContent2(valueYAxis.get((int) valIndex), h);
linechart2.setMarker(mv2);
linechart2.highlightValue(h);

答案 2 :(得分:0)

我在你引用时浏览了wiki,甚至我尝试了以下与上面不同的代码,

Highlight h = new Highlight((int) valIndex, 0);
        linechart2.highlightValue(h);
mv2.refreshContent2(valueYAxis.get((int) valIndex), h);
linechart2.getMarkerView();
linechart2.setDrawMarkerViews(true);
linechart2.getData().setHighlightEnabled(true);
//        RefreshChart();
linechart2.invalidate();

结果仍然不幸,标记视图永远不会弹出。我通过您的代码示例折线图单步执行调查。它显示在触摸事件之后,程序通过直接进入refreshContent并且之后获得x和y偏移功能并且标记刚刚弹出。 但是我之前提到的场景中,没有任何触摸事件,但是按下按钮会触及我的图形将会发出的声音,并通过突出显示最终用户搜索时间的位置点来指示。所以我手动添加了refreshContent2(与MarkerView类中的refreshContent函数相同)来模拟进程,但之后我发现它永远不会去获得与你的示例情况不同的x,y偏移函数。标记视图永远不会弹出是因为我怀疑吗?