Ist es möglich, LimitLine
durch ein benutzerdefiniertes Layout zu ersetzen? So sieht es etwa so aus:
Ich sehe einige Lösungen dafür:
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)
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:
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%Verwenden Sie ViewPortHandler, um den Offset des Diagramms zu erhalten
%Vor%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.
Tags und Links android mpandroidchart