2012-07-19 10 views
6

¿Qué falta en este código? Este mismo código funciona en ICS. En la API 8, aparece el desplazamiento y parte del contenido sale de la pantalla. ¿Cómo obtener el caché de dibujo en este caso?Llamar a `getDrawingCache` devuelve nulo cuando se habilita el desplazamiento

Código:

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

duplicado posible de [Android View.getDrawingCache devuelve un valor nulo, solamente nula] (http://stackoverflow.com/questions/2339429/android-view-getdrawingcache-returns -null-only-null) –

+0

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

Respuesta

17

me lo resolvió. Creó un mapa de bits del tamaño de la vista y dibujó la vista en él.

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

Se utiliza el mapa de bits de pageBmp ..

+0

10x mucho hombre, tuve algunos problemas con un mapa de bits, era siempre nulo, con algo similar a la forma en que lo intentó la primera vez, pero este código acaba de guardar mi proyecto: D Funciona impecablemente –

+0

Awesome hack dude ... Resolvió mi problema. Esto realmente ayudaría a aquellos que están usando scrollview como padre porque getDrawingCache() no funciona si scrollView está presente. –

Cuestiones relacionadas