获取自定义视图的正确尺寸

时间:2016-02-11 18:31:39

标签: java android android-custom-view

我正在尝试在自定义视图中绘制十字线,

@Override
public void onWindowFocusChanged(boolean hasWindowFocus)
{   super.onWindowFocusChanged(hasWindowFocus);
    top=this.getTop()+(this.getTop()/10);
    bottom=this.getBottom()-(this.getBottom()/10);
    left=this.getLeft()+(this.getLeft()/10);
    right=this.getRight()-(this.getRight()/10);
    Log.e("graph",getTop()+":"+top+","+this.getBottom()+":"+bottom+","+this.getLeft()+":"+left+","+this.getRight()+":"+right);
}

我使用此代码获取视图的顶部,底部,左侧和右侧坐标,并将第十部分调整为填充。

在onDraw方法中,

    canvas.drawLine(left, (bottom - top) / 2, right, (bottom - top) / 2, paint);
    canvas.drawLine((right-left)/2,top,(right-left)/2,bottom,paint);

这两种方法用于绘制水平居中且垂直居中的线。我正在手机的屏幕上看到这张图。

enter image description here

我想要水平居中和垂直居中的线,我该怎么办?

2 个答案:

答案 0 :(得分:0)

顶部,底部,左侧和右侧属性不描述视图的尺寸。它们描述了视图在其容器中的位置。

相反,在视图对象上使用getWidth()和getHeight()代替查找尺寸并使用该信息进行绘制。

答案 1 :(得分:0)

top,bottom,是相对于ist容器中视图位置的所有坐标, 我认为你需要绘制如下行:

canvas.drawLine(this.getLeft(), (this.getTop() + this.getBottom())/2, this.getRight(), (this.getTop() + this.getBottom())/2, paint);
canvas.drawLine((this.getLeft()+this.getRight())/2, this.getTop(), (this.getLeft()+this.getRight())/2, this.getBottom(), paint);
相关问题