为了账号安全,请及时绑定邮箱和手机立即绑定

getDrawinCache返回NULL,仅为NULL

getDrawinCache返回NULL,仅为NULL

哈士奇WWW 2019-07-09 12:51:07
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?是否必须在设置缓存之前实际绘制视图?谢谢!
查看完整描述

3 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

我也有这个问题,并找到了这样的答案:

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


查看完整回答
反对 回复 2019-07-09
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

一个人被否定的基本原因是这个观点没有被提及。然后,使用view.getWidth()、view.getLayoutParams().Width等所有尝试,包括view.getDrawinCache()和view.buildDrawinCache(),都是无用的。因此,首先需要为视图设置维度,例如:

view.layout(0, 0, width, height);

(您已经根据自己的喜好设置了“宽度”和“高度”,或者通过Windows Manager获得了它们。)


查看完整回答
反对 回复 2019-07-09
  • 3 回答
  • 0 关注
  • 492 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信