使用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值。例如,我有一个图表价格与日期,然后在单选项卡标记视图将显示价格值和该点的日期。没有足够的信息来调试这个。“不工作”是什么意思?您是否已使用调试器确定哪些部分正在工作,哪些部分不工作?