MPChartAndroid軸線標籤自定義的一些顯示BUG
阿新 • • 發佈:2019-01-26
MPChartAndroid的API呼叫我上一篇大概都介紹了,這一篇主要講一下我專案中使用遇到的一個BUG,X軸設定標籤的顯示問題。
mValues = new ArrayList<>();
mValues.add(new Entry(0, 10,"08-1"));
mValues.add(new Entry(1, 15,""));
mValues.add(new Entry(2, 25,""));
mValues.add(new Entry(3, 19,""));
mValues.add(new Entry(4, 25,"08-10"));
mValues.add(new Entry(5, 16,""));
mValues.add(new Entry(6, 40,""));
mValues.add(new Entry(7, 24,""));
mValues.add(new Entry(8, 27,"08-21"));
切換日期
這時候有個很嚴重的問題,X軸標籤個數不固定就會出現顯示問題,所以我們需要做以下設定
xAxis.setLabelCount(mValues.size(),true);
第二個引數傳true的意思就是將x軸標籤按照前邊設定的數字強行等分。
這時候還有一個問題就是圖示設定的資料如果為空會報空指標錯誤,所以我加了一下的判斷。
if (Vals.size() > 0) {
xAxis.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
if ((int) value >= Vals.size()) {
return "";
} else {
return Vals.get((int) value).getData() + "";
}
}
});
}
原本我以為這樣就OK 了,最後又遇到另一個問題,當標籤很多的時候value強轉int型別就會出問題
這時候你就需要將value 四捨五入的轉為int值
if (mValues.size() > 0) {
xAxis.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
if ((int) value >= mValues.size()) {
return "";
} else {
int tag = (int) ((value * 10 + 5) / 10);
Log.d("New_Fragment_Date", "value..==:" + value);
Log.d("New_Fragment_Date", "tag:" + tag);
return mValues.get(tag).getData() + "";
}
}
});
}