MPAndroidChart:侦听xAxis标签上的点击事件

时间:2017-02-01 12:29:55

标签: android mpandroidchart

如何获取xAxis标签的onClickListener?如果无法做到这一点,是否有其他方法可以在xAxis标签上接收点击事件?

1 个答案:

答案 0 :(得分:1)

xAxis标签实际上不是View的实例。相反,它们由MPAndroidChart直接渲染到画布上。因此,您无法获得OnClickListener

相反,实现自定义的方法是实现自定义OnChartGestureListener。该类的javadoc为here

mChart.setOnChartGestureListener(new MyChartGestureListener());

MyChartGestureListener中,您将覆盖onChartSingleTapped(MotionEvent me)

@Override
public void onChartSingleTapped(MotionEvent me) {
    float tappedX = me.getX();
    float tappedY = me.getY();
    MPPointD point = mChart.getTransformer(YAxis.AxisDependency.LEFT).getValuesByTouchPoint(tappedX, tappedY);
    Log.d(TAG, "tapped at: " + point.x + "," + point.y);
}

上面的代码段显示了如何从MotionEvent获取x和y值。然后,您需要一些逻辑来检查您是否单击一个标签而不是图表的另一部分。也许是有条件的:

if ((point.y) < labelYValue) {
     Log.d(TAG, "tapped on label for x-value: " + point.x);
}

如果您愿意,也可以使用y中的原始MotionEvent