2017-02-01 6 views

ответ

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. Тогда вам понадобится некоторая логика, чтобы проверить, нет ли вы одного нажатия метки, а не другой части диаграммы. Возможно условное, как:

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

Или вы могли бы, вероятно, использовать сырые y из MotionEvent, если вы предпочитаете.

+0

Трансформатор был всем, о чем мне нужно было знать. Я был недостаточно осведомлен, чтобы снова задать этот вопрос, несмотря на то, что вы решили решить аналогичную проблему через трансформатор в одном из моих предыдущих вопросов. – androidnoob

+1

@androidnoob спасибо за согласие. Это достаточно разумный вопрос - кто-то может спросить об этом в будущем, поэтому я думаю, что в целом это Q & A помогает –

Смежные вопросы