2017-01-04 4 views
0

xy 값을 차트의 한 번 탭에 표시하고 싶습니다. 나는 모든 단계를 따라 갔지만 여전히 효과가 없다. 잘못된 것이 있습니까?mpandroid 차트 라이브러리를 사용하여 markerview가 작동하지 않습니다.

이 내 코드

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

singlr 탭 (우리가 탭하는 지점)에 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 

를 구현해야 내 수업이 acheive하기

mChart.setOnChartValueSelectedListener(this); 

지금 당신이 onValueSelected을 무시하고 표시하기 위해 뭔가를 구현해야하는이 클래스에 리스너를 선택한 값을 설정 선택한 항목. 예를 들면 토스트 :

@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

관련 문제