如何获取xAxis标签的onClickListener?如果无法做到这一点,是否有其他方法可以在xAxis标签上接收点击事件?
xAxis标签实际上不是View
的实例。相反,它们由MPAndroidChart直接渲染到画布上。因此,您无法获得OnClickListener
。
但是可以通过实现自定义的方法自定义OnChartGestureListener
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
。