首页 > 解决方案 > 使用 getXOffset 和 getYOffset 时出现 MPAndroidChart 错误“方法不会从其超类覆盖”

问题描述

我正在使用 MPAndroid Chart,这是我在 AndroidStudio 和 Im Electronics Engineer 上的第一个应用程序

我根据这个链接做了我的代码:https ://github.com/PhilJay/MPAndroidChart/wiki/MarkerView

我得到一个错误:错误:方法没有覆盖或实现超类型的方法

我不知道为什么不能覆盖

我尝试了一切,搜索了网络,但我找不到任何解决方案

这是 MyMarker.java 类

package com.example.programsql;

import android.content.Context;
import android.graphics.Canvas;
import android.widget.TextView;

import com.github.mikephil.charting.components.MarkerView;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.highlight.Highlight;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class MyMarkerView extends MarkerView {

    private TextView tvContent;
    private long referenceTimestamp;  // minimum timestamp in your data set
    private DateFormat mDataFormat;
    private Date mDate;

    public MyMarkerView (Context context, int layoutResource, long referenceTimestamp) {
        super(context, layoutResource);
        // this markerview only displays a textview
        tvContent = (TextView) findViewById(R.id.tvContent);
        this.referenceTimestamp = referenceTimestamp;
        this.mDataFormat = new SimpleDateFormat("dd MMM yyyy HH:mm:ss", Locale.ENGLISH);
        this.mDate = new Date();

    }

    // callbacks everytime the MarkerView is redrawn, can be used to update the
    // content (user-interface)
    @Override
    public void refreshContent(Entry e, Highlight highlight) {
        long currentTimestamp = (int)e.getX() + referenceTimestamp;

        tvContent.setText(e.getY() + " en  " + getTimedate(currentTimestamp)); // set the entry-value as the display text

    }


    @Override <<<<<<<<<<<<<<<< I get error on this
    public int getXOffset(float xpos) {
        // this will center the marker-view horizontally
        return -(getWidth() / 2);
    }

    @Override <<<<<<<<<<<<<<<< I get error on this too
    public int getYOffset(float ypos) {
        // this will cause the marker-view to be above the selected value
        return -getHeight();
    }

    private String getTimedate(long timestamp){

        try{
            mDate.setTime(timestamp*1000); 
            return mDataFormat.format(mDate); 
        }
        catch(Exception ex){
            return "xx";
        }
    }
}

这发生在最后两个 @override 部分

标签: android

解决方案


在最新版本(3.1.0)上,有 2 种方法getXOffset()getYOffset()已被getOffset(). 所以改变你的代码

@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();
}

@Override
public MPPointF getOffset() {
    return new MPPointF(-(getWidth() / 2), -getHeight());
}

推荐阅读