キャンバスにグリッドを描画するカスタム ビューがあります。グリッドの外側の端がデバイス画面の端と一致するようにグリッドを描画します。getWidth()
メソッドとメソッドを使用しgetHeight()
てグリッドの寸法を決定し、それを描画しますが、表示されるグリッドには常にセルが画面外に描画されます。
ディスプレイの幅と高さを取得し、代わりにそれらを描画に使用すると、グリッドの幅は希望どおりになりますが、ディスプレイの高さの一部がバッテリーと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);
}
}
}
私が従ったアプローチはこれに似ていますが、うまくいきませんでした。ビューの幅と高さの真の値を取得するにはどうすればよいですか? 読んでくれてありがとう!