使用HorizontalBarChart控件,关闭各个坐标轴,通过setValueFormatter来设置值的显示,但很奇怪的就是偶尔能显示,大部分时候只有状图没有文字与值。
大佬们快来指导一下到底是哪出了问题。同样的代码放在BarChart上就一切正常
代码如下:
mChart.setDrawBarShadow(false);
mChart.setDrawValueAboveBar(true);
mChart.getDescription().setEnabled(false);
mChart.setPinchZoom(false);
mChart.setDrawGridBackground(false);
mChart.setTouchEnabled(false);
XAxis xl = mChart.getXAxis();
xl.setEnabled(false);
YAxis yl = mChart.getAxisLeft();
yl.setEnabled(false);
YAxis yr = mChart.getAxisRight();
yr.setEnabled(false);
mChart.setFitBars(true);
mChart.animateY(1000);
Legend l = mChart.getLegend();
l.setEnabled(false);
ArrayList<BarEntry> yVals1 = new ArrayList<BarEntry>();
yVals1.add(new BarEntry(1,50,"A"));
yVals1.add(new BarEntry(2,95,"B"));
yVals1.add(new BarEntry(3,200,"C"));
yVals1.add(new BarEntry(4,29,"D"));
BarDataSet set1;
if (mChart.getData() != null &&
mChart.getData().getDataSetCount() > 0) {
set1 = (BarDataSet) mChart.getData().getDataSetByIndex(0);
set1.setValues(yVals1);
mChart.getData().notifyDataChanged();
mChart.notifyDataSetChanged();
} else {
set1 = new BarDataSet(yVals1, "DataSet 1");
set1.setValueFormatter(new ValueFormatter() {
@Override
public String getFormattedValue(float value) {
return "连接异常"+(int)value;
}
});
List<Integer> gradientColors = new ArrayList<>();
gradientColors.add(Color.parseColor("#FC8456"));
gradientColors.add(Color.parseColor("#779FFE"));
gradientColors.add(Color.parseColor("#FAB945"));
gradientColors.add(Color.parseColor("#54B4A7"));
set1.setColors(gradientColors);
ArrayList<IBarDataSet> dataSets = new ArrayList<>();
dataSets.add(set1);
BarData data = new BarData(dataSets);
data.setValueTextSize(10f);
data.setBarWidth(0.8f);
mChart.setData(data);
}