TextView(getDrawingCache)中的位图始终为null

时间:2011-04-06 13:00:38

标签: android view

我正在尝试提取与显示的TextView实例关联的位图,但它总是返回一个空值。我究竟做错了什么?我应该使用textview.draw(canvas)吗?

    TextView textview = (TextView) findViewById(R.id.text_title);
    textview.setDrawingCacheEnabled(true);
    textview.buildDrawingCache();        
    Bitmap bmp = textview.getDrawingCache();

3 个答案:

答案 0 :(得分:9)

在获得绘图缓存之前执行此操作将解决问题

view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());

然后getDrawingCache()将返回一个位图并在画布上绘制该位图。

如果您在应用程序中使用位图,则希望通过调用它们的recycle()方法从内存中清除它们,以便从内存中清除位图,以避免outOfMemoryException

答案 1 :(得分:7)

Android具有最大绘图缓存大小。如果绘图缓存大于此值,则getDrawingCache()将返回null。请参阅this question的答案。

您可以在this question的答案中找到解决方法。

答案 2 :(得分:1)

view.getDrawingCache();

应该是:

textview.getDrawingCache();