2011-01-11 9 views
0

Das Top-Level-Layout in meiner Aktivität ist ein framelayout. Ich habe diese App fertiggestellt, debuggt und getestet und sie funktioniert genau so, wie sie es in jeder Hinsicht auf meinem g1 und auf verschiedenen Emulatoren tun sollte. Aber auf 3,7-Zoll-Displays mit 2.1+, sind einige in einem linearen Layout verpackt Bilder regelmäßig nicht sichtbar. Ich weiß, dass sie da sind, weil du sie mit Effekt in der App berühren und ziehen kannst. Ich nehme also an, dass sie unter der SurfaceView, die die Hauptkomponente der App ist, irgendwie bekommen haben. Dies ist offensichtlich so, obwohl das SurfaceView vor dem LinearLayout im XML deklariert ist. Die ImageViews in dem LinearLayout werden jedoch programmgesteuert gegen Ende von onCreate() hinzugefügt.ImageViews werden manchmal nicht in FrameLayout-Aktivität angezeigt

Framelayout stapelt alles, was hinzugefügt wird, übereinander - die einzige Möglichkeit, mehr als ein Kind eines Frame-Layouts zu sehen, ist, wenn sie kleiner als der Bildschirm sind und getrennt voneinander platziert sind.

Seltsam, manchmal sind die Bildansichten sichtbar - es ist zufällig. Jedenfalls habe ich versucht, dies mit framelayout.bringChildToFront (View v) auf dem linearen Layout ohne Erfolg zu bekämpfen.

Ich frage mich, ob jemand irgendwelche Einblicke hat, wie das Verhalten zufällig so sein könnte, und wie ich diese Bildansichten kodieren sollte, um dies zu verhindern, und warum das Problem nur auf 3,7 vs 3,2-Zoll-Bildschirme auftritt (Wie es passiert, die beiden 3,2-Zoll-Bildschirme waren beide HTC, so könnte Anbieter auch Faktor sein).

[Bearbeiten] Eigentlich habe ich festgestellt, dass dies ein 2.2-Problem ist, nicht ein Bildschirmgröße (oder sogar Anbieter) Problem. Es kann nicht sichergestellt werden, dass ImageViews, die zu einem Framelayout mit einem SurfaceView hinzugefügt wurden, oben auf der Oberflächenansicht angezeigt werden. Ich habe einige Tests in den jeweiligen onDraw() -Methoden durchgeführt und die Bildansichten sind "sichtbar" (0), und nichts tut etwas zum Alpha der Zeichen, die auch bei ondraw() vorhanden sind. [0]

Jeder Einblick wäre willkommen.

Ken T.

Antwort

0

Ich hatte die Drawables in Surface die DoDraw() -Methode zu ziehen, und ich hatte die Dateinamen des Drawables zu ändern. Ich denke, das war irgendwo ein Fall von bösartigem Code. Ich musste die ImageViews verwerfen und meinen Touch-Code an anderer Stelle übertragen.