0

カスタム ビューのスクリーン ショットを作成しようとしたときに、IllegalArgumentException : width and height must be >0. ここに私が書いたものがあります:

bitmap = loadBitmapFromView(v1);//v1 the custom view I want to picture.
public static Bitmap loadBitmapFromView(View v) {
Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);                
Canvas c = new Canvas(b);
v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height);
v.draw(c);
return b;
}

例外がある行:Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);
もちろん、ビューが表示された後、next_actボタンコードでスクリーンショットコードが実行されます

4

1 に答える 1

0

の幅と高さは のLayoutParamsような定数にすることができFILL_PARENT、それらは負の数です。

ビューの測定された寸法を取得するには、次を使用できます。

v.getMeasuredWidth() and v.getMeasuredHeight()

ただし、何を求めているか、およびビューが測定されているかどうかによって異なります。

スクリーンショットを撮る前に、ビューが描画されるまで待つ方がおそらく理にかなっています;-) しかし、ユースケースについてもっと説明する必要があります.

于 2013-04-05T17:34:59.427 に答える