使用mpandroid图表库时markerview不工作
我想在图表上的单个点击上显示使用mpandroid图表库时markerview不工作,android,mpandroidchart,Android,Mpandroidchart,我想在图表上的单个点击上显示x和y值。我遵循了所有的步骤,但仍然不起作用。有什么不对劲吗 这是我的密码 LineData data = new LineData(getDataSet()); chart.setData(data); chart.setDrawMarkerViews(true); chart.setTouchEnabled(true); chart.getDescription().setEnabled(false); chart
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());
}
}
SetDrawMarkerView和setMarkerView不推荐使用,您可以使用以下代码:
final CustomMarkerView mv = new CustomMarkerView(this,R.layout.custom_marker_view_layout);
mv. setChartView (chart);
chart.setMarker(mv);
我是用祝酒词做到的。要在我的类中实现这一点,我需要实现OnChartValueSelectedListener
public class MainPage implements OnChartValueSelectedListener
在创建图表的过程中,将所选侦听器的值设置为此类
mChart.setOnChartValueSelectedListener(this);
现在,您需要覆盖onValueSelected并实现一些功能来显示所选项目。例如,敬酒:
@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();
}
您的CustomMarkerview未显示,因为您未突出显示任何值 我已经使用
条形图解决了我的问题。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));
}
请解释更多你想要它做什么,你做了什么尝试,并使之成为现实。我想在singlr tap(我们点击的点)上显示x和y值。例如,我有一个图表价格与日期,然后在单选项卡标记视图将显示价格值和该点的日期。没有足够的信息来调试这个。“不工作”是什么意思?您是否已使用调试器确定哪些部分正在工作,哪些部分不工作?