2016-07-16 4 views
1

So zeigen Sie die X-Achsenwerte im Liniendiagramm in der Markierungsansicht an. Ich habe die Funktion getVal() verwendet, um die Y-Achsenwerte abzurufen, aber wie die X-Achsenwerte in der Markierungsansicht ermittelt werden ist mein Code für die Markeransicht.Wie zeigen Sie X-Markierungen in der Markierungsansicht in Liniendiagramm?

public class MymarkerView extends MarkerView 
{ 
private TextView indices; 

public MymarkerView(Context context, int layoutResource) { 
    super(context, layoutResource); 
    indices = (TextView) findViewById(R.id.indices); 
} 

// callbacks everytime the MarkerView is redrawn, can be used to update the 
// content (user-interface) 
@Override 
public void refreshContent(Entry e, Highlight highlight) { 

     indices.setText("Indices:" +e.getVal()); 
    } 

@Override 
public int getXOffset(float xpos) { 
    // this will center the marker-view horizontally 
    return -(getWidth()/2); 

} 

@Override 
public int getYOffset(float ypos) { 
    // this will cause the marker-view to be above the selected value 
    return -getHeight(); 
} 
public void draw(Canvas canvas, float posx, float posy) 
{ 
    // take offsets into consideration 
    posx += getXOffset(posx); 
    posy=0; 
    // AVOID OFFSCREEN 
    if(posx<65) 
     posx=65; 
    if(posx>350) 
     posx=350; 

    // translate to the correct position and draw 
    canvas.translate(posx, posy); 
    draw(canvas); 
    canvas.translate(-posx, -posy); 
    } 

} 

Antwort

0

Es gibt keine direkte Methode x-Wert in MPAndroidChart 2.2.x Mit dem Absenden des XValues ​​Array die MarkerView Sie es bekommen kann leicht zu bekommen. Siehe die folgende MarkerView Implementierung.

public class MymarkerView extends MarkerView 
{ 
    ArrayList<String> mXLabels; 

    public MymarkerView(Context context, int layoutResource, ArrayList<String> xLabels) { 
     super(context, layoutResource); 
     mXLabels = xLabels; 
    } 

    @Override 
    public void refreshContent(Entry e, Highlight highlight) { 
     //get x value 
     String xVal= mXLabels.get(e.getXIndex()); 
    } 

    @Override 
    public int getXOffset(float xpos) { 
     // this will center the marker-view horizontally 
     return -(getWidth()/2); 

    } 

    @Override 
    public int getYOffset(float ypos) { 
     // this will cause the marker-view to be above the selected value 
     return -getHeight(); 
    } 
} 

stellen Sie den `MarkerView‘

ArrayList<String> xVals = new ArrayList<>(); 
//add labels to xVals 
.... 
.... 

LineData lineData = new LineData(xVals, dataSets); 

lineChart.setMarkerView(new MymarkerView(context, R.layout.custom_marker_view_layout, xVals); 
lineChart.setData(lineData); 

auf Diagramm oder wenn Sie MPAndroidChart 3.0.0 verwenden, den x-Wert wie dieser

@Override 
    public void refreshContent(Entry e, Highlight highlight) { 
     //get x value 
     float xVal = e.getX(); 
    } 
+0

Dank @Madhu ..es erhalten habe mein Problem mit MPAndroidChart 2.4.4 gelöst. –

+0

Eine weitere Frage, die ich stellen wollte ... Ich benutzte die draw() Methode, um meine Markeransicht innerhalb des Diagramms zu positionieren. Aber im obigen Code habe ich einen bestimmten Wert von "posx" (65 und 350) verwendet, um die Position von zu fixieren markerview für mein Diagramm. Dies funktionierte für die Hochformatansicht meines mobilen Bildschirms. Aber wie man den "posx" -Wert einstellt, um für den ganzen android Bildschirm mit einem festen Abstand der Markierungsansicht von links sowie rechts zu arbeiten .... Was Änderungen sollte ich zu meinem posx Wert in "draw" Methode machen. –

Verwandte Themen