猿问

getDrawinCache返回NULL,仅为NULL

getDrawinCache返回NULL,仅为NULL

有谁能告诉我为什么

public void addView(View child) {
  child.setDrawingCacheEnabled(true);
  child.setWillNotCacheDrawing(false);
  child.setWillNotDraw(false);
  child.buildDrawingCache();
  if(child.getDrawingCache() == null) { //TODO Make this work!
    Log.w("View", "View child's drawing cache is null");
  }
  setImageBitmap(child.getDrawingCache()); //TODO MAKE THIS WORK!!!}

总是记录绘图缓存为NULL,并将位图设置为NULL?

是否必须在设置缓存之前实际绘制视图?

谢谢!


哈士奇WWW
浏览 494回答 3
3回答

侃侃尔雅

我也有这个问题,并找到了这样的答案:v.setDrawingCacheEnabled(true);// this is the important code :)  // Without it the view will have a dimension of 0,0 and the bitmap will be null          v.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),              MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight()); v.buildDrawingCache(true);Bitmap b = Bitmap.createBitmap(v.getDrawingCache());v.setDrawingCacheEnabled(false); // clear drawing cache

汪汪一只猫

一个人被否定的基本原因是这个观点没有被提及。然后,使用view.getWidth()、view.getLayoutParams().Width等所有尝试,包括view.getDrawinCache()和view.buildDrawinCache(),都是无用的。因此,首先需要为视图设置维度,例如:view.layout(0, 0, width, height);(您已经根据自己的喜好设置了“宽度”和“高度”,或者通过Windows Manager获得了它们。)
随时随地看视频慕课网APP

相关分类

Android
我要回答