이를 수행 할 수있는 방법이 있습니다. 비트 맵과 캔버스를 생성하고 view.draw (canvas);
코드는 다음과 같습니다.
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(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
v.draw(c);
return b;
}
보기가 표시되지 않은 경우 크기가 0이됩니다. 다음과 같이 측정 할 수 있습니다.
if (v.getMeasuredHeight() <= 0) {
v.measure(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
Bitmap b = Bitmap.createBitmap(v.getMeasuredWidth(), v.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
v.draw(c);
return b;
}
편집 : 이 게시물 에 따르면 , 값으로 전달하면 아무 일도하지 않습니다WRAP_CONTENT
makeMeasureSpec()
(일부 뷰 클래스에서는 작동하지만) 권장되는 방법은 다음과 같습니다.
// Either this
int specWidth = MeasureSpec.makeMeasureSpec(parentWidth, MeasureSpec.AT_MOST);
// Or this
int specWidth = MeasureSpec.makeMeasureSpec(0 /* any */, MeasureSpec.UNSPECIFIED);
view.measure(specWidth, specWidth);
int questionWidth = view.getMeasuredWidth();