MPAndroidChart MarkerView处于固定位置

时间:2016-04-30 12:09:05

标签: mpandroidchart

有没有办法为MarkerView定位?我需要将其固定在左上角右上角角落。

3 个答案:

答案 0 :(得分:1)

这是一种将标记固定在左上角或右上角的方法

创建自定义MarkerView后,您可以执行以下操作。

1)您可以为父视图/布局设置一个ID,并使用该ID来获取其宽度。

layoutWidth = customLayout.getWidth();

2)然后,您可以覆盖绘制并执行以下操作:

    @Override
    public void draw(Canvas canvas, float posX, float posY) {

        if (posX > (canvas.getWidth() / 2.0)) 
        //Check if the user is in the right half of the canvas
            super.draw(canvas, leftXPos, leftYPos); 
        //Draw marker on the left top corner


        else 
        //Otherwise draw the marker on the top right corner.
            super.draw(canvas, canvas.getWidth() - layoutWidth, rightYPos);
    }

您可以将leftXPos,leftYPos和rightYPos的值设置为最佳外观。

希望这会有所帮助!

答案 1 :(得分:1)

getXOffset(float xpos) 和 getYOffset(float ypos) 不再被 MarkerView 类覆盖。要修复标记位置,您必须通过以下方式覆盖 getOffsetForDrawingAtPoint(float posX, float posY) 方法:

private MPPointF mOffset;
@Override
public MPPointF getOffsetForDrawingAtPoint(float posX, float posY) {
    if(mOffset == null) {
        // center the marker horizontally and fixed Y position at the top

            mOffset = new MPPointF(-(getWidth() / 2f), -posY);
        
    }

    return mOffset;
}

答案 2 :(得分:0)

您应该创建自定义MarkerView,就像在documentation

中一样

然后,像这样自定义getXOffset和getYOffset:

@Override
public int getXOffset(float xpos) {
    // this will cause the marker-view to be at left of the screen
    return -(int)xpos;
}

@Override
public int getYOffset(float ypos) {
    // this will cause the marker-view to be at top screen
    return -(int)ypos;