如何在相同的 x,y 值上管理多个标记视图

use*_*117 6 charts android mpandroidchart

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

  1. 如何使用带方向箭头的标记视图(意味着如果左侧没有空间,则标记视图应该在右侧)?

  2. 在我的项目中,可以有多个点使用相同的 x,y 值。那么如何为这些具有相同 x,y 值的点显示多个标记视图?

使用此解决方案(经过一些修改),我可以获得相同 x,y 值的多个标记视图,但它们相互覆盖,因此基本上用户只能看到一个标记视图。

期待 在此处输入图片说明

结果- 如果左侧没有足够的空间,则将隐藏点隐藏在标记视图下方。如何将标记视图移动到点的左/右/顶部/底部。 在此处输入图片说明

小智 0

关于你的第一点-在我的项目中,我实现了drawMarkerView 的方法。为此,我创建了一个 CustomMarkerView 类,其中如果图形上没有右侧空间(如在我的项目中),则标记视图将向左显示。为此,实现下面的类。

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

之后,将其添加 CustomMarkerView mv = new CustomMarkerView(this, R.layout.your_markerview_layout);到您实现图表的类文件中。

然后,添加lineChart.setMarker(mv);到您的图表中。如果不符合您的预期,请修改位置posx and posy