代码之家  ›  专栏  ›  技术社区  ›  Jitesh Prajapati ravi

MPChart Android-如何在相同的x,y值上管理多个markerview

  •  0
  • Jitesh Prajapati ravi  · 技术社区  · 6 年前

    我用过 MPChart android库在我的项目中,它满足了我的需求,但现在在我项目的新增强中,我遇到了一些问题。

    1. 如何使用带方向箭头的markerview(意思是如果左侧没有空格,则markerview应该位于右侧)?

    2. 在我的项目中,有可能有多个点使用相同的x,y值。那么,如何用相同的x,y值显示这些点的多个markerview呢?

    使用 this soltion (经过一些修改),我可以为相同的x,y值获取多个markerview,但是它们相互覆盖,所以基本上只有一个markerview对用户可见。

    期望 enter image description here

    -如果左边没有足够的空间,点隐藏在markerview下面。如何将markerview移动到点的左/右/上/下。 enter image description here

    0 回复  |  直到 6 年前
        1
  •  0
  •   Twinkle    6 年前

    关于你的第一点-在我的项目中,我实现了 draw MarkerView方法。为此,我创建了一个CustomMarkerView类,在这个类中,如果图上没有右空格(就像在我的项目中一样),那么markerview就会朝左显示。实现下面的类。

    public class CustomMarkerView extends MarkerView {
    
        private int uiScreenWidth;
    
        public CustomMarkerView(Context context, int layoutResource) {
            super(context, layoutResource);
            uiScreenWidth = getResources().getDisplayMetrics().widthPixels;
    
        }
    
        @Override
        public void draw(Canvas canvas, float posx, float posy) {
            // Checking and updating offsets.
            int w = getWidth();
            if ((uiScreenWidth - posx - w) < w) {
                posx -= w;
            }
            //  draw
            canvas.translate(posx, posy);
            draw(canvas);
            canvas.translate(-posx, -posy);
        }
    }
    

    在这之后加上这个 CustomMarkerView mv = new CustomMarkerView(this, R.layout.your_markerview_layout); 在实现图表的类文件中。

    然后,加上 lineChart.setMarker(mv); 在你的图表里。如果不符合您的期望,请修改位置 posx and posy .

    推荐文章