如何确保android视图完全布局?

时间:2014-10-10 08:27:52

标签: android android-layout android-canvas android-view

我正在调用 inputView.draw(drawCanvas),以便将我的视图保存到位图。

  Bitmap resultBitmap = Bitmap.createBitmap(viewWidth, viewHeight, Bitmap.Config.ARGB_8888);
  Canvas drawCanvas = new Canvas(resultBitmap);
  inputView.draw(drawCanvas);

位图不包含完整的视图图像(我的视图在画布上有自定义绘图 - 带图例的饼图)。保存的位图只是传奇的一部分。

阅读View.draw(android.graphics.Canvas)

的javadoc
  

在调用此函数之前,视图必须已完成完整布局。

如何确保视图完全布局? 当调用inputView.draw(drawCanvas)时,我的视图在屏幕上呈现并可见。

2 个答案:

答案 0 :(得分:0)

我认为您可以查看布局参数。

LayoutParams layoutParams = layout.getLayoutParams();

然后检查它是否已满(我不明白“完整”是什么意思)。

答案 1 :(得分:0)

通过添加以下代码解决

 int measuredWidth = View.MeasureSpec.makeMeasureSpec(viewWidth, View.MeasureSpec.EXACTLY);
 int measuredHeight = View.MeasureSpec.makeMeasureSpec(viewHeight, View.MeasureSpec.EXACTLY);
 inputView.measure(measuredWidth, measuredHeight);
 inputView.layout(0, 0, inputView.getMeasuredWidth(), inputView.getMeasuredHeight());

在绘制到我的位图之前。

奇怪的是,在我拥有的三个屏幕中的两个屏幕上,一切正常。保存的位图始终完整。