2017-02-01 5 views

Antwort

1

Die xAxis-Beschriftungen sind keine Instanzen von View. Stattdessen werden sie von MPAndroidChart direkt auf die Leinwand gerendert. Sie können also keine OnClickListener für sie haben.

Der Weg zu tun, was Sie wollen, ist stattdessen eine benutzerdefinierte OnChartGestureListener zu implementieren. Die javadoc für diese Klasse ist here

mChart.setOnChartGestureListener(new MyChartGestureListener()); 

In Ihrem MyChartGestureListener Sie würden außer Kraft setzen 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); 
} 

Das Snippet oben zeigt, wie die x- und y-Werte aus dem MotionEvent zu erhalten. Sie würden dann eine gewisse Logik benötigen, um zu überprüfen, ob Sie nur auf ein Etikett und nicht auf einen anderen Teil des Diagramms tippen. Vielleicht ein bedingter wie:

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

Oder Sie wahrscheinlich die rohe y vom MotionEvent verwenden können, wenn Sie es vorziehen.

+0

Ein Transformator war alles, was ich wissen musste. Ich war ignorant genug, um diese Frage erneut zu stellen, obwohl Sie eine Lösung für ein ähnliches Problem durch Transformator in einer meiner vorherigen Fragen zur Verfügung gestellt haben. – androidnoob

+1

@androidnoob danke für das Akzeptieren. Es ist eine vernünftige Frage - jemand könnte es in der Zukunft fragen, also denke ich, dass diese Fragen und Antworten helfen –

Verwandte Themen