2015-07-18 2 views
1

Итак, я использую потрясающую библиотеку MPAndroid Chart, чтобы сделать простой LineChart. Я смог настроить его в значительной степени, используя пример проекта на GitHub.mpandroid chart некоторые методы не могут быть разрешены

Проблема не в том, когда я переместить его в мой собственный код, некоторые методы больше не могут быть решены:

mLineChart.setExtraOffsets() и mLineChart.setAutoScaleMinMaxEnabled(), в частности. Могут быть и другие, но это единственные, что я заметил.

Все остальное работает нормально. Любая идея, почему я не могу получить доступ к этим двум методам? Что мне следует вникать, чтобы узнать больше о том, почему это так?

public class MyFragment extends Fragment { 
private LineChart mLineChart; 

// stuff here 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    // stuff here 

    // Creating numbers line chart for candidate 
    LineChart numChart = (LineChart)view.findViewById(R.id.numbersLineChart); 
    setNumChart(numChart, mObject.getNums()); 

    // stuff here 
    } 

public void setNumChart(LineChart lineChart, List<Integer> nums){ 

    mLineChart = lineChart; 
    mLineChart.setDrawGridBackground(false); 

    // no description text 
    mLineChart.setDescription(""); 
    mLineChart.setNoDataTextDescription("You need to provide data for the chart."); 

    // enable value highlighting 
    mLineChart.setHighlightEnabled(true); 

    // enable touch gestures 
    mLineChart.setTouchEnabled(true); 

    // enable scaling and dragging 
    mLineChart.setDragEnabled(false); 
    mLineChart.setScaleEnabled(false); 

    // if disabled, scaling can be done on x- and y-axis separately 
    mLineChart.setPinchZoom(false); 

    // create a custom MarkerView (extend MarkerView and specify the layout to use for it) 
    MyMarkerViewv2 mv = new MyMarkerViewv2(getActivity(), R.layout.custom_marker_view, mLineChart); 

    // set the marker to the chart 
    mLineChart.setMarkerView(mv); 

    // disable all axes lines and labels 
    YAxis leftAxis = mLineChart.getAxisLeft(); 
    leftAxis.setEnabled(false); 

    mLineChart.getAxisRight().setEnabled(false); 

    XAxis bottomAxis = mLineChart.getXAxis(); 
    bottomAxis.setEnabled(false); 

    // add data 
    setLineChartData(nums); 

    //THIS METHOD CANNOT BE RESOLVED******************** 
    mLineChart.setExtraOffsets(30f,50f,30f,0f); 

    // get the legend (only possible after setting data) 
    Legend l = mLineChart.getLegend(); 
    l.setEnabled(false); 

    mLineChart.invalidate(); 

} 

public void setLineChartData(List<Integer> nums){ 

    //create xVariables aka strings of the months 
    ArrayList<String> xVals = new ArrayList<String>(); 
    for (int i = 0; i < nums.size(); i++) { 
     xVals.add(Month.getMonthfromIndex(i).getAbbrev()); 
    } 

    //add corresponding numbers 
    ArrayList<Entry> yVals = new ArrayList<Entry>(); 
    for (int i = 0; i < nums.size(); i++) { 
     yVals.add(new Entry(nums.get(i), i)); 
    } 

    // create a dataset and give it a type 
    LineDataSet set1 = new LineDataSet(yVals, "DataSet"); 

    set1.setColor(Color.BLACK); 
    set1.setCircleColor(Color.BLACK); 
    set1.setLineWidth(0.75f); 
    set1.setDrawCircles(true); 
    set1.setDrawValues(false); 
    set1.setCircleSize(1.75f); 
    set1.setDrawCircleHole(false); 

    ArrayList<LineDataSet> dataSets = new ArrayList<LineDataSet>(); 
    dataSets.add(set1); // add the datasets 

    // create a data object with the datasets 
    LineData data = new LineData(xVals, dataSets); 

    // set data 
    mLineChart.setData(data); 
} 

// stuff here 

class MyMarkerViewv2 extends MarkerView { 

    private TextView markerContent; 
    private LineChart mChart; 

    public MyMarkerViewv2(Context context, int layoutResource, LineChart lChart) { 
     super(context, layoutResource); 

     mChart = lChart; 
     markerContent = (TextView) findViewById(R.id.markerContent); 
    } 

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

     if (e instanceof CandleEntry) { 
      CandleEntry ce = (CandleEntry) e; 

      List<String> months = mChart.getLineData().getXVals(); 
      markerContent.setText(months.get(e.getXIndex() % 12) + "\n" + Utils.formatNumber(ce.getHigh(), 0, true) + "%"); 
     } else { 
      List<String> months = mChart.getLineData().getXVals(); 
      markerContent.setText(months.get(e.getXIndex() % 12) + "\n" + Utils.formatNumber(e.getVal(), 0, true) + "%"); 
     } 
    } 

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

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

У меня также есть Linechart обернутый в вертикальной LinearLayout с другими элементами и что все это завернутые внутри ScrollView. Не уверен, что это вызывает проблему или нет.

+0

Укажите, пожалуйста, все необходимые коды –

+0

, любые идеи? – stellarowl12

ответ

0

Ничего, я понял. Это потому, что библиотека, загруженная Maven и Gradle, не совсем такая же, как и в примере проекта на веб-сайте.

Смежные вопросы