2017-02-18 3 views
0

Я читал через документацию для MPAndroidChart (с использованием v3.0.1), и я не могу найти способ, чтобы удалить надписи на брусьяхMPAndroidChart Bar Chart Значения

sample chart

I хотели бы скрыть значения, отображаемые поверх каждого столбца, или изменить их значения на то, что я могу установить вручную. Любой вариант будет хорошо работать для моей реализации.

Я не уверен, что это возможно. Я очень новичок в разработке Android. Любая помощь будет отличной.

мой код:

public class MainActivity extends AppCompatActivity { 

protected BarChart chart; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    chart = (BarChart) findViewById(R.id.chart1); 

    Description desc ; 
    Legend L; 

    L = chart.getLegend(); 
    desc = chart.getDescription(); 
    desc.setText(""); // this is the weirdest way to clear something!! 
    L.setEnabled(false); 


    YAxis leftAxis = chart.getAxisLeft(); 
    YAxis rightAxis = chart.getAxisRight(); 
    XAxis xAxis = chart.getXAxis(); 

    xAxis.setPosition(XAxisPosition.BOTTOM); 
    xAxis.setTextSize(10f); 
    xAxis.setDrawAxisLine(true); 
    xAxis.setDrawGridLines(false); 


    leftAxis.setTextSize(10f); 
    leftAxis.setDrawLabels(false); 
    leftAxis.setDrawAxisLine(true); 
    leftAxis.setDrawGridLines(false); 

    rightAxis.setDrawAxisLine(false); 
    rightAxis.setDrawGridLines(false); 
    rightAxis.setDrawLabels(false); 

    BarData data = new BarData( setData()); 


    data.setBarWidth(0.9f); // set custom bar width 
    chart.setData(data); 

    chart.setFitBars(true); // make the x-axis fit exactly all bars 
    chart.invalidate(); // refresh 
    chart.setScaleEnabled(false); 
    chart.setDoubleTapToZoomEnabled(false); 
    chart.setBackgroundColor(Color.rgb(255, 255, 255)); 
    chart.animateXY(2000, 2000); 
    chart.setDrawBorders(false); 
    chart.setDescription(desc); 
    chart.setDrawValueAboveBar(true); 


} 

private BarDataSet setData() { 

    ArrayList<BarEntry> entries = new ArrayList<>(); 

    entries.add(new BarEntry(0f, 30f)); 
    entries.add(new BarEntry(1f, 80f)); 
    entries.add(new BarEntry(2f, 60f)); 
    entries.add(new BarEntry(3f, 50f)); 
    entries.add(new BarEntry(4f, 70f)); 
    entries.add(new BarEntry(5f, 60f)); 


    BarDataSet set = new BarDataSet(entries, ""); 
    set.setColor(Color.rgb(155, 155, 155)); 
    set.setValueTextColor(Color.rgb(155,155,155)); 

    return set; 
} 

}

Кто-нибудь имел опыт работы с этим? Github ссылка для библиотеки здесь: https://github.com/PhilJay/MPAndroidChart

ответ

3

Просто создайте новый класс, и пусть это осуществить IValueFormatter и вернуть все, что вы хотите быть выведено на экран из метода getFormattedValue (...), как показано ниже.

public class MyValueFormatter implements IValueFormatter 
{ 
    @Override 
    public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) 
    { 
     return ""; 
    } 
} 

BarDataSet set = new BarDataSet(entries, ""); 
set.setValueFormatter(new MyValueFormatter()); 
set.setColor(Color.rgb(155, 155, 155)); 
set.setValueTextColor(Color.rgb(155, 155, 155)); 

Вы можете найти более here.

+1

Это было! Я не мог понять, что этот класс делает вообще спасибо! – Diesel

1

Для других, ищущих решения, попробуйте вместо этого установить setDrawValues в наборе данных.

BarDataSet dataSet = new BarDataSet(entries, ""); 
dataSet.setDrawValues(false);