Изгледи не се виждат на Android Jelly Bean

В момента разработвам приложение, с което може да се извлече и прегледа график. За да покажа графика, използвах TimeRulerView (и BlocksLayout и BlockView) java изходни файлове от приложението Google IO 2011, защото ми хареса външният вид и усещането. Изходният код може да бъде намерен тук: https://github.com/underhilllabs/iosched2011 . (Google замени там един с кода на IO2012).

Тъй като моят Galaxy Nexus се актуализира до Jelly Bean (4.1.1) вчера, TimeRulerView (и/или някой от другите) вече не се показва.

Странното е, че те всъщност все още са там, но не се виждат. Виждам лента за превъртане с дължината, която обикновено има timeruler. Освен това, когато обикновено щраквам върху блок в изгледа, получавам малък изскачащ прозорец и това все още се случва, когато не виждам timeruler или блок.

Тествах оригиналното приложение IO2011 на моя JB GN, но и там нищо не се вижда, така че проблемът е в (един от) изгледа(ите) или начина, по който JellyBean изобразява изгледа(ите) (може би маслото на проекта?).

Вижте тук ( https://dl.dropbox.com/u/7102660/TimeRulerView_JellyBean_problem.zip) за екранни снимки на ICS (приложението работи), JB (приложението не работи) и приложението GoogleIO2011.


person PieterAelse    schedule 18.07.2012    source източник
comment
Имам същия проблем с ImageViews. От актуализацията до Jelly Bean изображенията вече няма да се показват. Въпреки че пространството на оформлението е изчислено правилно.. (манипулирам ги в getView на персонализиран arrayadapter)   -  person fklappan    schedule 18.07.2012
comment
Използвайте инструмента hierarchyviewer, за да видите границите на вашия изглед. Ще научите дали има нулева ширина/височина, или има проблем с дъщерните изгледи, или има правилно изчислен размер и съдържанието просто не се рисува. С тази информация можете да продължите напред.   -  person Pointer Null    schedule 01.08.2012


Отговори (2)


Благодарение на отговора на Крис си поиграх с настройките за хардуерно ускорение. Използвам и кода iosched2011 и трябваше само да премахна реда android:layerType="software" от моя BlocksLayout View във файла block_content.xml.

person Stefan Arn    schedule 27.08.2012
comment
Това решение най-накрая накара персонализираните ми изгледи да се появят, но някои от тях бяха с проблеми или се показваха погрешно. Трябваше да добавя android:hardwareAccelerated=false към активността в манифеста, за да започне всичко да работи отново нормално. - person SilithCrowe; 11.09.2012

Може ли това да е нещо общо с хардуерно ускорение ? Наскоро се сблъсках с проблем на няколко телефона с ICS, но не всички телефони/устройства бяха засегнати. Добавянето на маркера hardwareAccelerated към моя манифест също не реши проблема и трябваше да го дефинирам в конкретни изгледи, които не исках да бъдат хардуерно ускорени. Моето решение използва android:layerType="софтуер" в моите xml оформления и setLayerType(LAYER_TYPE_SOFTWARE, null) в кода на Java.

РЕДАКТИРАНЕ: Тествайки това повече, не реши проблема ми с помощта на setLayerType на Jelly Bean. Задаването на типа слой на софтуер на ICS реши проблема ми. Единственият начин, по който можех да накарам изгледите да се показват, беше да настроя цялото приложение или конкретна дейност на android:hardwareAccelerated="false".

person Chris Feist    schedule 01.08.2012
comment
android:hardwareAccelerated=false беше това, което в крайна сметка реши това за мен, плюс решението на Stefan Arn. - person SilithCrowe; 11.09.2012