2012-07-19 15 views
6

Czego brakuje w tym kodzie? Ten sam kod działa na ICS. W interfejsie API 8 pojawia się scroll i część zawartości wychodzi poza ekran. Jak zdobyć pamięć podręczną rysunku w tym przypadku?Wywołanie funkcji `getDrawingCache` zwraca wartość null, gdy włączono przewijanie.

Kod:

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

Możliwy duplikat [Android View.getDrawingCache zwraca null, tylko null] (http://stackoverflow.com/questions/2339429/android-view-getdrawingcache-returns -null-only-null) –

+0

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

Odpowiedz

17

I rozwiązać go. Utworzono bitmapę rozmiaru widoku i narysowałem do niego widok.

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); 

użył pageBmp bitmapy ..

+0

10x dużo ludzi, miałem pewne problemy z bitmapą, to było zawsze null, z czymś podobnym do tego, jak próbowałem za pierwszym razem, ale ten kod właśnie zapisał mój projekt: D Działa bezbłędnie –

+0

Awesome hack dude .... Rozwiązałem mój problem. To naprawdę pomogłoby tym, którzy używają scrollview jako rodzic, ponieważ getDrawingCache() nie działa, jeśli obecny jest scrollView. –

Powiązane problemy