我想在点击图表时显示x
和y
值。我遵循了所有步骤,但仍然无法正常工作。有什么问题吗?
这是我的代码
LineData data = new LineData(getDataSet());
chart.setData(data);
chart.setDrawMarkerViews(true);
chart.setTouchEnabled(true);
chart.getDescription().setEnabled(false);
chart.setOnChartGestureListener(this);
chart.setHighlightPerTapEnabled(true);
CustomMarkerView mv = new CustomMarkerView(this,R.layout.custom_marker_view_layout);
mv.setChartView(chart);
mv.setOffset(-mv.getMeasuredWidth() / 2, -mv.getMeasuredHeight());
chart.setMarkerView(mv);
chart.setPinchZoom(false);
chart.setDrawGridBackground(false);
以下是我的自定义标记视图代码
public class CustomMarkerView extends MarkerView {
private TextView tvContent;
public CustomMarkerView(Context context, int layoutResource) {
super(context, layoutResource);
tvContent = (TextView) findViewById(R.id.tvContent);
}
@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.getY(), 0, true));
}
super.refreshContent(e, highlight);
}
@Override
public MPPointF getOffset() {
return new MPPointF(-(getWidth() / 2), -getHeight());
}
}
答案 0 :(得分:1)
我使用Toast这样做了。为了在我的课堂上实现这一点,我需要实现OnChartValueSelectedListener
public class MainPage implements OnChartValueSelectedListener
在创建图表期间,将选定值的侦听器设置为此类
mChart.setOnChartValueSelectedListener(this);
现在您需要覆盖onValueSelected并实现一些内容来显示您选择的项目。例如Toast:
@Override
public void onValueSelected(Entry e, Highlight h) {
if(mCurrentToast != null)
{
mCurrentToast.cancel();
}
String res = String.format(Locale.ENGLISH, "Item: %f; Value: %.2f", e.getX(), e.getY());
mCurrentToast = Toast.makeText(this, res, Toast.LENGTH_SHORT);
mCurrentToast.show();
}
答案 1 :(得分:0)
您的CustomMarkerview没有显示,因为您没有突出显示任何值。
我已经使用barchart.highlightValue(...);
解决了我的问题。请参见下面的代码:
@Override
public void onValueSelected(Entry e, Highlight h) {
Highlight h1 = barchartCalories.getHighlighter().getHighlight(float x, float y);
barchartCalories.highlightValue(h1);
barchart.setMarkerView(new CustomMarkerView(activity, R.layout.custom_marker_view));
}
答案 2 :(得分:-1)
不推荐使用setDrawMarkerViews和setMarkerView,可以使用下面的代码:
final CustomMarkerView mv = new CustomMarkerView(this,R.layout.custom_marker_view_layout);
mv. setChartView (chart);
chart.setMarker(mv);