mus*_*ica 7 android mpandroidchart
我正在使用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);
}
Run Code Online (Sandbox Code Playgroud)
我的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();
}
Run Code Online (Sandbox Code Playgroud)
}
注意:我使用片段来显示图表.
小智 5
面临类似的问题。您应该调用super刷新markerview。关于Kotlin的示例:
class CustomMarkerView(context: Context, layoutResource: Int) : MarkerView(context, layoutResource) {
override fun refreshContent(e: Entry?, highlight: Highlight?) {
markerDate.text = e?.data.toString()
markerValue.text = e?.y.toString()
super.refreshContent(e, highlight)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5774 次 |
| 最近记录: |