2016-06-04 1 views
1

DescriptionMPAndroidChart HorizontalBarChart setVisibleXRangeMaxmum не работает

По фото. Я использую HorizontalBarChart в MPAndroidChart. Я просто хочу, чтобы на диаграмме отображалось около 10 предметов в x направлении HorizontalBarChart. I setVisibleXRangeMinimum и setVisibleXRangeMaxmum но он не работает. Что я должен сделать, чтобы это сработало ???

Edit Jun 7 14:50

  • initialization

    private void initCombinedChart() { 
        horizontalBarChart.setDescription(""); 
        horizontalBarChart.setDrawGridBackground(false); 
        horizontalBarChart.setDrawBarShadow(false); 
        horizontalBarChart.getLegend().setTextColor(Color.rgb(255, 255, 255)); 
        horizontalBarChart.setScaleEnabled(false); 
        horizontalBarChart.setOnChartValueSelectedListener(this); 
        horizontalBarChart.setDrawValueAboveBar(true); 
    
        Legend legend = horizontalBarChart.getLegend(); 
        legend.setFormSize(8f); 
    
        YAxis rightAxis = horizontalBarChart.getAxisRight(); 
        rightAxis.setEnabled(false); 
    
        YAxis leftAxis = horizontalBarChart.getAxisLeft(); 
        leftAxis.setDrawGridLines(false); 
        leftAxis.setAxisMinValue(0f); 
        leftAxis.setTextColor(Color.rgb(255, 255, 255)); 
        leftAxis.setEnabled(false); 
    
        XAxis xAxis = horizontalBarChart.getXAxis(); 
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM_INSIDE); 
        xAxis.setDrawGridLines(false); 
        xAxis.setDrawAxisLine(false); 
    
    } 
    
  • setData

    private void setData() { 
        ArrayList<BarEntry> entries = new ArrayList<BarEntry>(); 
        ArrayList<String> xVals = new ArrayList<>(); 
        DateHelper dateHelper = new DateHelper(DateHelper.FORMAT_ONLINE); 
    
        for (OnlineCountResult.OnlineCountModel model : mDatas) { 
         xVals.add(dateHelper.getDateSimpleDate(model.getBatchMinute())); 
         entries.add(new BarEntry((float) model.getCountNum(), mDatas.indexOf(model))); 
        } 
    
        BarDataSet set; 
    
        if (horizontalBarChart.getData() != null && horizontalBarChart.getData().getDataSetCount() > 0) { 
         set = (BarDataSet) horizontalBarChart.getData().getDataSetByIndex(0); 
         set.setYVals(entries); 
         horizontalBarChart.getData().setXVals(xVals); 
         horizontalBarChart.getData().notifyDataChanged(); 
         horizontalBarChart.notifyDataSetChanged(); 
        } else { 
         ... 
    
         ArrayList<IBarDataSet> dataSets = new ArrayList<>(); 
         dataSets.add(set); 
    
         BarData data = new BarData(xVals, dataSets); 
         data.setValueTextSize(20f); 
    
         horizontalBarChart.setData(data); 
         horizontalBarChart.setVisibleXRangeMaximum(10); 
         horizontalBarChart.setVisibleXRangeMinimum(7); 
    
         horizontalBarChart.animateY(1000); 
        } 
    } 
    
+0

Можете ли вы добавить код? – Dhruv

+0

@Dhruv Sry за задержку! Я уже разместил свой код выше. Спасибо за вашу помощь :-) –

+0

Попробуйте добавить 'horizontalBarChart.invalidate();' и 'horizontalBarChart.refreshDrawableState();' после 'animateY' ​​в вашей части. – Dhruv

ответ

1

Проблема заключается в том, вы настраиваете набор данных в C hart, а затем вы устанавливаете свой X Range вместо установки X Range перед установкой набора данных в диаграмму.

Вы можете добавить либо следующий код в остальное части в конце:

horizontalBarChart.invalidate(); 
horizontalBarChart.refreshDrawableState(); 

Или следующий код в вашем initCombinedChart:

horizontalBarChart.setVisibleXRangeMaximum(10); 
horizontalBarChart.setVisibleXRangeMinimum(7); 

Edit 1: Попробуйте с setVisibleYRangeMaximum вместо setVisibleXRangeMaximum.

+0

Я пробовал оба ответа, но он все еще не работает. Y-направление на изображении было растянуто. –

+0

Это значит, что-то случилось. До сих пор ничего не растягивалось. – Dhruv

+0

Попробуйте использовать 'setVisibleYRangeMaximum' вместо' setVisibleXRangeMaximum'. – Dhruv

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

  • Нет связанных вопросов^_^