2015-06-17 8 views
0

Таким образом, в основном у меня есть следующий фрагмент кода:setDrawingCacheEnabled не работает на LinearLayout

llPhotoTest.setDrawingCacheEnabled(false); 
    llPhotoTest.setDrawingCacheEnabled(true); 
    ... 
    llPhotoTest.getDrawingCache(); 

Первый раз все в порядке, но второй раз в кэше картина остаются неизменными. Я видел много решений для этой проблемы, но ничего не работает для меня. Буду признателен за любую помощь или предложение. Спасибо заранее

Я пробовал:

llPhotoTest.setDrawingCacheEnabled(true); 
llPhotoTest.getDrawingCache(); 
llPhotoTest.setDrawingCacheEnabled(false); 

Также я попытался

llPhotoTest.buildDrawingCache(); 
llPhotoTest.getDrawingCache(); 
llPhotoTest.destroyDrawingCache(); 

Еще такая же картина :(

Существует макет границы enter image description here

+0

Это поможет людям много, если бы вы сказали нам, что решения, которые вы видели, и почему они не работают для вас. – LisaMM

+0

Вы не можете просто вызвать 'llPhotoTest.d [ispatchD] raw (canvas)'? – pskink

+0

Нет метода 'dispatchDraw (canvas)' –

ответ

0

Благодаря всем! Я нашел решение, это был вопрос. llPhotoTest.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

Из документации http://developer.android.com/reference/android/view/View.html#LAYER_TYPE_SOFTWARE:

Indicates that the view has a software layer. A software layer is backed by a bitmap and causes the view to be rendered using Android's software rendering pipeline, even if hardware acceleration is enabled.

1

Это не лучший способ отобразить растровое изображение.

Используйте ImageView, а не LinearLayout и называют ImageView.setImageBitmap(Bitmap bm)

+0

Я прикрепил изображение с границами. Похоже, все в порядке с точки зрения границ. –

+0

Дело в том, что у меня есть иерархия элементов, а LinearLayout - внутри корневого элемента. Поэтому, чтобы сделать снимок экрана, я делаю вызов 'llPhotoTest.getDrawingCache()'. Нет проблем при отображении изображения, проблема в том же изображении все время :( –

+0

Я понятия не имею, что вы должны попробовать другой метод. 'draw()' нужно будет вызывать каждый раз, когда 'View' недействителен. Просто используйте уже предоставленные классы. Я часто использую' FrameLayout' и добавляю много перекрывающихся Я добавил бы «LinearLayout» и «ImageView» в качестве дочерних элементов этого класса, а затем создал экземпляр «Bitmap» или «Drawable» правильно, так как ваш пуст! – Andy