Tôi đang sử dụng MPandroidchart cho thấy bảng xếp hạng dòng trong application.I tôi đã thêm mã sau đây để hiển thị Marker View, nhưng nó không được hiển thị trênMarkerView không hiển thị sử dụng MPAndroidChart
private void initializeChart(LineChart chart, String chartName) {
// Chart view
chart.setDrawGridBackground(false);
chart.setDescription("");
chart.getLegend().setEnabled(true);
//chart.setTouchEnabled(false);
int color = getResources().getColor(R.color.white);
chart.getAxisLeft().setTextColor(color); // left y-axis
chart.getXAxis().setTextColor(color);
chart.setTouchEnabled(true);
CustomMarkerView mv = new CustomMarkerView(this.getActivity(), R.layout.marker_view_tv);
chart.setMarkerView(mv);
//X axis
XAxis xAxis = chart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setDrawGridLines(false);
xAxis.setDrawLabels(true);
//Y axis
YAxis leftAxis = chart.getAxisLeft();
YAxis rightAxis = chart.getAxisRight();
rightAxis.setDrawLabels(false);
rightAxis.setDrawGridLines(false);
leftAxis.setDrawLabels(true);
leftAxis.setDrawGridLines(false);
leftAxis.setStartAtZero(false);
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getActivity());
leftAxis.setLabelCount(Constants.KEY_LINE_YAXIS_SCALECOUNT, true);
ChartItem item = CannonJsonParser.parseCanonJson(act, act.res);
int maxYVal = pref.getInt(Constants.KEY_YAXIS_VALUE, 0);
leftAxis.setAxisMaxValue(maxYVal);
leftAxis.setAxisMinValue(0);
setLineData(item, chartName);
// set data
chart.setData(lineData);
chart.getLegend().setEnabled(false);
//animate
//chart.animateX(2000, Easing.EasingOption.EaseInExpo);
chart.setDragEnabled(true);
chart.setScaleXEnabled(true);
chart.setScaleYEnabled(false);
chart.setHighlightPerDragEnabled(false);
chart.setHighlightPerTapEnabled(false);
}
My lớp CustomMarkerView
public class CustomMarkerView extends MarkerView {
private TextView tvContent;
public CustomMarkerView(Context context, int layoutResource) {
super(context, layoutResource);
tvContent = (TextView) findViewById(R.id.tvContent);
}
// callbacks everytime the MarkerView is redrawn, can be used to update the
// content (user-interface)
@Override
public void refreshContent(Entry e, Highlight highlight) {
if (e instanceof CandleEntry) {
CandleEntry ce = (CandleEntry) e;
tvContent.setText("" + Utils.formatNumber(ce.getHigh(), 0, true));
} else {
tvContent.setText("" + Utils.formatNumber(e.getVal(), 0, true));
}
}
@Override
public int getXOffset(float xpos) {
// this will center the marker-view horizontally
return -(getWidth()/2);
}
@Override
public int getYOffset(float ypos) {
// this will cause the marker-view to be above the selected value
return -getHeight();
}
}
Lưu ý: tôi đang sử dụng đoạn để hiển thị biểu đồ.