2017-01-04 2 views
0

Я хочу показать x и y Значение на одном кране на диаграмме. Я следил за всеми шагами, но все же он не работает. Что-то не так?markerview не работает с использованием библиотеки карт mpandroid

Это мой код

LineData data = new LineData(getDataSet()); 

    chart.setData(data); 
    chart.setDrawMarkerViews(true); 
    chart.setTouchEnabled(true); 
    chart.getDescription().setEnabled(false); 
    chart.setOnChartGestureListener(this); 
    chart.setHighlightPerTapEnabled(true); 
    CustomMarkerView mv = new CustomMarkerView(this,R.layout.custom_marker_view_layout); 
    mv.setChartView(chart); 
    mv.setOffset(-mv.getMeasuredWidth()/2, -mv.getMeasuredHeight()); 
    chart.setMarkerView(mv); 
    chart.setPinchZoom(false); 
    chart.setDrawGridBackground(false); 

Ниже мой код для просмотра пользовательских маркеров

public class CustomMarkerView extends MarkerView { 

    private TextView tvContent; 

    public CustomMarkerView(Context context, int layoutResource) { 
     super(context, layoutResource); 

     tvContent = (TextView) findViewById(R.id.tvContent); 

    } 


    @Override 
    public void refreshContent(Entry e, Highlight highlight) { 



     if (e instanceof CandleEntry) { 

      CandleEntry ce = (CandleEntry) e; 

      tvContent.setText("" + Utils.formatNumber(ce.getHigh(), 0, true)); 
     } else { 

      tvContent.setText("" + Utils.formatNumber(e.getY(), 0, true)); 
     } 

     super.refreshContent(e, highlight); 
    } 

    @Override 
    public MPPointF getOffset() { 
     return new MPPointF(-(getWidth()/2), -getHeight()); 
    } 
} 
+0

Пожалуйста, объясните больше, что вы хотите, чтобы сделать, что вы сделали, чтобы попытаться сделать это. – Flummox

+0

Я хочу показать значение x и y на одиночном кране (точка, к которой мы касаемся). Например, у меня есть цена диаграммы против даты, тогда в режиме просмотра с одной вкладкой отобразится цена и дата в этой точке. – vishal

+0

Недостаточно информации, чтобы отладить это. Что означает «не работает»? Вы определили с отладчиком, какие части работают, а какие нет? –

ответ

-1

setDrawMarkerViews и setMarkerView устарела, вы можете использовать код ниже:

final CustomMarkerView mv = new CustomMarkerView(this,R.layout.custom_marker_view_layout); 
mv. setChartView (chart); 
chart.setMarker(mv); 
+0

не работает для меня, маркер все еще не показывает ... –

1

I сделали это с помощью тоста. Чтобы добиться этого в моем классе мне нужно реализовать OnChartValueSelectedListener

public class MainPage implements OnChartValueSelectedListener 

При создании диаграммы установите значение выбранного слушателя к этому классу

mChart.setOnChartValueSelectedListener(this); 

Теперь вам нужно переопределить onValueSelected и реализовать что-то для отображения ваши выбранные предметы. Например, Toast:

@Override 
public void onValueSelected(Entry e, Highlight h) { 
    if(mCurrentToast != null) 
    { 
     mCurrentToast.cancel(); 
    } 

    String res = String.format(Locale.ENGLISH, "Item: %f; Value: %.2f", e.getX(), e.getY()); 
    mCurrentToast = Toast.makeText(this, res, Toast.LENGTH_SHORT); 
    mCurrentToast.show(); 
} 
+0

спасибо его легко и просто :) – vishal