Benutzerdefinierte Ansicht der Begrenzungslinie in MPAndroidChart

8

Ist es möglich, LimitLine durch ein benutzerdefiniertes Layout zu ersetzen? So sieht es etwa so aus:

Ich sehe einige Lösungen dafür:

  1. Vielleicht gibt es Methoden in der Bibliothek für Anpassungen wie diese, gibt es solche?
  2. Erhalte Koordinaten von TextView , wo der Wert gespeichert ist, und füge ein benutzerdefiniertes Layout an diesem Ort hinzu. Aber wie kann ich dieses TextView erreichen?

Vielleicht war jemand mit diesem Problem konfrontiert. Bitte teilen Sie Ihre Erfahrung.

BEARBEITEN: neueste Teillösung

Nachdem ich lange nach der Lösung gesucht hatte, kam ich dazu, die benutzerdefinierte Ansicht programmatisch mit den Koordinaten der Grenzlinie hinzuzufügen.

Allgemeines Layout des Bildschirms wie folgt:

Koordinaten sind ziemlich einfach berechnet. X ist aus Diagrammkoordinaten und Y bekannt:

  

Y = ((max - lastValue) * Höhe) / ((max + min) + y)

An diesem Punkt kenne ich grundsätzlich die Position, die ich brauche. Obwohl ich nicht sicher bin, dass es wegen Elternteil ScrollView richtig ist.

Der nächste Schritt besteht darin, ein benutzerdefiniertes Layout an diesen Koordinaten (x, y)

hinzuzufügen

Und hier kommt das neue Problem . Ich habe versucht, eine Ansicht nach oben RelativeLayout hinzuzufügen. Es wird hinzugefügt, aber es bewegt sich nicht zusammen mit ScrollView . Daher musste diese Ansicht genau auf Chart hinzugefügt werden. Schau, wie ich das versucht habe:

%Vor%

Vielleicht sollte ich das übergeordnete Layout von Chart erreichen und dort mein benutzerdefiniertes Layout aufblasen. Aber wie ?

BEARBEITEN 2: Benutzerdefinierte Ansicht über Diagramm hinzugefügt, kann jedoch aufgrund der Bildlaufansicht nicht den richtigen Ort finden

Nun sieht die Situation so aus:

Vielleicht bin ich irgendwo falsch in den Berechnungen. Aber zumindest ändert diese Ansicht ihre Position mit dem neuen Wert, obwohl sie niemals die richtigen Koordinaten trifft.

%Vor%     
AnZ 18.03.2016, 12:00
quelle

2 Antworten

3
%Vor%

Verwenden Sie ViewPortHandler, um den Offset des Diagramms zu erhalten

%Vor%     
tiny sunlight 25.03.2016 06:21
quelle
2

Das ist keine gute Art, das zu tun. Ich habe es getan, indem ich die YAxisRenderer.java-Datei erweitert habe, wo die Etiketten tatsächlich gezeichnet werden. Sie sind keine Ansichten, sie sind auf Leinwand gezeichnet. Hier ist mein Code für die Labels:

'

%Vor%

'

Bitte beachten Sie, dass Sie mTrans.pointValuesToPixel(pts) verwenden müssen, um Ihre Y-Werte in Pixel zu konvertieren.

    
Stefan Bushev 07.04.2016 07:16
quelle

Tags und Links