onMeasure()がすでに呼び出された後、getWidth()とgetHeight()に対してアプリケーションのビューが0を返すことがわかりました。これは、ほんの一握りのデバイスでのみ起こります。ほとんどのアンドロイドデバイスでは、次のコードが正常に動作します。私のcheckViewAndLoad()関数は、ビューのサイズに応じてスケールされたビットマップを読み込みます。ここonMeasure()(特定のデバイス)の後にgetWidth()とgetHeightが0を返す
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
Log.d("widthMeasureSpec", Integer.toString(MeasureSpec.getSize(widthMeasureSpec)));
Log.d("heightMeasureSpec", Integer.toString(MeasureSpec.getSize(heightMeasureSpec)));
Log.d("viewWidth", Integer.toString(getWidth()));
Log.d("viewHeight", Integer.toString(getHeight()));
checkViewAndLoad();
}
はonMeasure(後の()/のgetHeight())のgetWidthゼロを返すデバイス(モトローラドロイドRazrのマックス)の対数である:
09-03 20:55:58.359: D/widthMeasureSpec(29496): 540
09-03 20:55:58.359: D/heightMeasureSpec(29496): 720
09-03 20:55:58.359: D/viewWidth(29496): 0
09-03 20:55:58.359: D/viewHeight(29496): 0
Iはまた、(setMeasuredDimensionsしようとしました)その手はログに影響を与えません。
ここで間違っていること、またはonMeasure()が呼び出された後にSurfaceViewの幅/高さを取得する方法を教えてもらえますか?