我正在尝试在自定义视图中绘制十字线,
@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);
这两种方法用于绘制水平居中且垂直居中的线。我正在手机的屏幕上看到这张图。
我想要水平居中和垂直居中的线,我该怎么办?
答案 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);