2012-07-18 10 views
13

Attualmente sto sviluppando un'applicazione con cui è possibile recuperare e visualizzare una pianificazione. Per visualizzare la pianificazione ho utilizzato i file sorgente Java TimeRulerView (e BlocksLayout e BlockView) dall'app Google IO 2011 perché mi piaceva l'aspetto grafico. Il codice sorgente può essere trovato qui: https://github.com/underhilllabs/iosched2011. (Google ne ha sostituito uno con il codice di IO2012).View (s) non visibile su Android Jelly Bean

Poiché il mio Galaxy Nexus è stato aggiornato a Jelly Bean (4.1.1) ieri, TimeRulerView (e/o uno degli altri) non viene più visualizzato.

La cosa strana è che in realtà sono ancora lì, ma non sono visibili. Riesco a vedere una barra di scorrimento della lunghezza normalmente utilizzata dal timer. Inoltre, quando normalmente clicco su un blocco nella vista, viene visualizzato un piccolo popup e ciò accade ancora quando non si vede il timer o un blocco.

Ho testato l'app IO2011 originale sul mio JB GN ma non c'è nemmeno nulla di visibile, quindi il problema si trova all'interno di una delle visualizzazioni o del modo in cui JellyBean sta visualizzando le visualizzazioni (burro del progetto forse ?).

Vedere qui (https://dl.dropbox.com/u/7102660/TimeRulerView_JellyBean_problem.zip) per gli screenshot su ICS (app funzionante), JB (app non funzionante) e l'app GoogleIO2011.

+0

Ho lo stesso problema con ImageViews. Dal momento dell'aggiornamento a Jelly Bean, le immagini non verranno più visualizzate. Sebbene lo spazio del layout sia calcolato correttamente .. (li manipolo nel getView di un arrayadapter personalizzato) – eftokay83

+2

Usa lo strumento hierarchyviewer per vedere i limiti della tua vista. Imparerai se ha zero widht/height, o se c'è un problema con le sue viste figlio, o se ha una dimensione calcolata correttamente, e il contenuto non è solo disegno. Con queste informazioni puoi andare avanti. –

risposta

4

Grazie a Chris answer ho giocato con le impostazioni di accelerazione hardware. Uso anche il codice iosched2011 e devo solo rimuovere la riga android:layerType="software" dalla mia vista BlocksLayout all'interno del file block_content.xml.

+0

Questa soluzione è ciò che ha causato l'apparizione delle mie visualizzazioni personalizzate, ma alcune di esse erano errate o visualizzate errate. Ho dovuto aggiungere android: hardwareAccelerated = "false" all'attività nel manifest per far ripartire tutto come normale. – SilithCrowe

7

Potrebbe essere qualcosa a che fare con Hardware acceleration? Recentemente mi sono imbattuto in un problema su alcuni telefoni con ICS, ma non tutti i telefoni/dispositivi erano interessati. L'aggiunta dell'hardware Il tag accelerato sul mio manifest non ha risolto il problema e ho dovuto definirlo su viste specifiche che non volevo accelerare l'hardware. La mia soluzione utilizzava android:layerType = "software" nei miei layout xml e setLayerType (LAYER_TYPE_SOFTWARE, null) nel codice java.

MODIFICA: testando questo di più, non ha risolto il problema utilizzando setLayerType su Jelly Bean. L'impostazione del tipo di livello sul software su ICS ha risolto il problema. L'unico modo in cui potevo visualizzare le visualizzazioni era impostare l'intera applicazione o attività specifica su android:hardwareAccelerated="false".

+0

android: hardwareAccelerated = "false" era ciò che alla fine mi ha risolto, oltre alla soluzione di Stefan Arn. – SilithCrowe

Problemi correlati