2012-07-19 3 views
6

이 코드에는 무엇이 누락 되었습니까? 이 동일한 코드는 ICS에서 작동합니다. API 8에서 스크롤이 나타나고 일부 콘텐츠가 화면 밖으로 나옵니다. 이 경우 드로잉 캐시를 얻는 방법은 무엇입니까?`getDrawingCache`를 호출하면 스크롤이 활성화되면 null이 반환됩니다.

코드 :

TableLayout page = (TableLayout) findViewById(R.id.page); 
page.setDrawingCacheEnabled(true); 
page.buildDrawingCache(); 

// getDrawingCache returns null... 
Bitmap pageBmp = Bitmap.createBitmap(page.getDrawingCache(true)); 
page.destroyDrawingCache(); 
page.setDrawingCacheEnabled(false); 
+0

가능한 중복 (http://stackoverflow.com/questions/2339429/android-view-getdrawingcache-returns -null-only-null) –

+0

유사 http://stackoverflow.com/questions/2339429/android-view-getdrawingcache-returns-null-only-null –

답변

17

나는 그것을 해결했다. 보기 크기의 비트 맵을 작성하고보기 크기를 그립니다.

TableLayout page = (TableLayout) findViewById(R.id.page); 
Bitmap pageBmp = Bitmap.createBitmap(page.getWidth(), page.getHeight(), 
             Config.ARGB_8888); 
Canvas canvas = new Canvas(pageBmp); 
page.draw(canvas); 

중고 [안드로이드 View.getDrawingCache가 null 만 돌려줍니다]의 pageBmp 비트 맵 ..

+0

10x 많은 사람, 비트 맵에 몇 가지 문제가있었습니다. 언제나 당신이 처음 시도했던 것과 비슷한 어떤 것으로서, 항상 null입니다. 그러나이 코드는 방금 프로젝트를 저장했습니다 : D 완벽하게 작동합니다. –

+0

굉장한 해킹 .... 내 문제가 해결되었습니다. 이것은 scrollView가있는 경우 getDrawingCache()가 작동하지 않기 때문에 scrollview를 부모로 사용하는 사용자에게 도움이됩니다. –

관련 문제