Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在X轴下以相同高度显示标记视图,无论值是多少?使用MPAndroidChart_Android_Mpandroidchart - Fatal编程技术网

在X轴下以相同高度显示标记视图,无论值是多少?使用MPAndroidChart

在X轴下以相同高度显示标记视图,无论值是多少?使用MPAndroidChart,android,mpandroidchart,Android,Mpandroidchart,目前使用MPAndroidChart,我想知道是否有办法在x轴下显示markerview,并且始终在相同的高度 例如,在下图中: 我希望显示x轴后面的markerview,就在相应的值栏下面。我成功地创建了自己的自定义标记视图,但它的显示位置似乎链接到了相应栏的顶部,因此我有点卡住了。提前感谢。我终于找到了解决此问题的简单方法 在这种情况下,您需要覆盖自定义MarkerView的draw方法 在这里,我可以控制我的x位置,同时确保标记始终保持在图形的顶部(如果不需要,请使用posy+=getY

目前使用MPAndroidChart,我想知道是否有办法在x轴下显示markerview,并且始终在相同的高度

例如,在下图中:


我希望显示x轴后面的markerview,就在相应的值栏下面。我成功地创建了自己的自定义标记视图,但它的显示位置似乎链接到了相应栏的顶部,因此我有点卡住了。提前感谢。

我终于找到了解决此问题的简单方法

在这种情况下,您需要
覆盖自定义
MarkerView
draw
方法

在这里,我可以控制我的x位置,同时确保标记始终保持在图形的顶部(如果不需要,请使用
posy+=getYOffset();

因此,这允许我将我的
MarkerView
保持在图形上方(最后,它比下面的:D更好),同时通过控制
posx
变量避免它的一部分在屏幕边缘消失

一个简单的例子:

@Override
        public void draw(Canvas canvas, float posx, float posy)
        {
            // take offsets into consideration
            posx += getXOffset();
            posy=0;

            // AVOID RIGHT/LEFT OFFSCREEN
            if(posx<45)
                posx=45;
            if(posx>265)
                posx=265;

            // translate to the correct position and draw
            canvas.translate(posx, posy);
            draw(canvas);
            canvas.translate(-posx, -posy);
        }
@覆盖
公共虚空绘制(画布、浮标posx、浮标posy)
{
//考虑抵消
posx+=getXOffset();
posy=0;
//避免屏幕右/左
如果(posx265)
posx=265;
//平移到正确的位置并绘制
canvas.translate(posx,posy);
绘画(画布);
canvas.translate(-posx,-posy);
}

我通过
覆盖
自定义
MarkerView
draw
方法解决了这个问题

canvas.translate(float dx,float dy)


我想在我的图表中显示这样的标记,你能分享你的代码吗?
@Override
public void draw(Canvas canvas, float posX, float posY) {
    MPPointF offset = getOffsetForDrawingAtPoint(posX, posY);

    int saveId = canvas.save();
    // translate to the correct position and draw
    canvas.translate(posX + offset.x, 0);
    draw(canvas);
    canvas.restoreToCount(saveId);
}