我有一个自定义视图,我在画布上绘制了一个网格。我希望绘制网格,使网格的外边缘与设备屏幕的边缘重合。我使用getWidth()
andgetHeight()
方法来确定网格的尺寸,然后绘制它,但是出现的网格总是在屏幕外绘制单元格。
如果我得到显示器的宽度和高度并使用它们进行绘图,那么我的网格宽度将是我想要的,但高度仍然关闭,因为某些显示器的高度被电池和 wifi 指示器占用,等等。另外,我不想使用这些值,因为我希望能够将我的视图嵌入到更大的 xml 布局中。
下面是我在自定义视图中找到视图宽度和高度的代码:
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh){
cellWidth = w/nCols;
cellHeight = h/nRows;
//find view dimensions
viewWidth = getWidth(); //this is just equal to w
viewHeight = getHeight(); //this is just equal to h
super.onSizeChanged(w,h,oldw,oldh);
}
和我的自定义视图的 onDraw:
@Override
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
canvas.drawRect(0,0,viewWidth,viewHeight, background);
for(int i=0; i <= nRows; i++){
canvas.drawLine(0,i*cellHeight, nCols*cellWidth,i*cellHeight,lines);
canvas.drawLine(i*cellWidth, 0, i*cellWidth, nRows*cellHeight, lines);
}
}
}
我遵循的方法与此类似,但没有奏效。如何获得视图宽度和高度的真实值?谢谢阅读!