Android Chart框架 MPAndroidChart学习笔记15_标签设置

Android Chart框架 MPAndroidChart学习笔记15_标签设置


点击这里查看项目源码

1.自定义标记

在MPAndroid中提供了两种方法:

  • 实现IMaker接口类
  • 继承MarkerView实现MakerView类

这里我们选择第二种方式,代码如下:

1.1 继承MarkerView实现MakerView类

public class MyMarkView extends MarkerView{
    private TextView tvContent;
    /**
     * Constructor. Sets up the MarkerView with a custom layout resource.
     *
     * @param context
     * @param layoutResource the layout resource to use for the MarkerView
     */
    public MyMarkView(Context context, int layoutResource) {
        super(context, layoutResource);
        tvContent= (TextView) findViewById(R.id.tv_content);

    }

    @Override
    public void refreshContent(Entry e, Highlight highlight) {
        tvContent.setTextColor(getResources().getColor(R.color.colorAccent));
        tvContent.setText("您选择的是"+e.getY());

        super.refreshContent(e, highlight);
    }

    private MPPointF mOffset;

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

1.2 实例化并引用

IMarker marker= new MyMarkView(getContext(),R.layout.makerview);
mChart.setMarker(marker);

当然我们需要一个layout



    

1.3分析方法

在1.1的继承类方法:

构造函数:在这里实例化对象

public MyMarkView(Context context, int layoutResource) {
    super(context, layoutResource);
    tvContent= (TextView) findViewById(R.id.tv_content);
}

刷新内容:这里设置标记显示的内容

    @Override
    public void refreshContent(Entry e, Highlight highlight) {
        tvContent.setTextColor(getResources().getColor(R.color.colorAccent));
        tvContent.setText("您选择的是"+e.getY());

        super.refreshContent(e, highlight);
    }

设置标签出现位置

getWidth()、getHeight()表示标签的宽度、高度

    private MPPointF mOffset;

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

所以这里的显示效果如下:

Android Chart框架 MPAndroidChart学习笔记15_标签设置_第1张图片
new MPPointF(-(getWidth()/2),-getHeight())

如果我们尝试设置为

mOffset=new MPPointF(0,0);

那么便会出现下面的样式

Android Chart框架 MPAndroidChart学习笔记15_标签设置_第2张图片
new MPPointF(0,0)

怎么样,察觉到不一样了吗?

你可能感兴趣的:(Android Chart框架 MPAndroidChart学习笔记15_标签设置)