Ich arbeite eine App, die Objekte unter SurfaceView
unter einigen vom Benutzer definierten Parametern zeichnet. Ich habe das Layout für die App erstellt, das einen Header, eine Fußzeile, eine Eingabe (wo der Benutzer die zu zeichnenden Parameter eingibt) und eine benutzerdefinierte SurfaceView
enthält.
Hier ist das vereinfachte Layout:
%Vor%Das Eingabe-Layout generiert dynamische Ansichten basierend auf Parametern.
Angenommen, ich erstelle ein EditText
innerhalb des Eingabe-Layouts, so dass die Tastatur angezeigt wird, wenn Sie damit interagieren.
Dies ist bevor die Tastatur angezeigt wird.
Dies ist, wenn die Tastatur angezeigt wird. Beachten Sie, dass das App-Layout verschoben ist und das Header-Layout nicht sichtbar ist.
Das Problem tritt auf, wenn die Tastatur ausfällt. Das Header-Layout, das früher unsichtbar war, bleibt die ganze Zeit unsichtbar (bis der Benutzer mit der App interagiert).
Ich habe GPU Overdraw eingeschaltet, um das Problem zu überprüfen (auch SurfaceView
Hintergrundfarbe auf weiß setzen), und hier ist das Ergebnis.
Vorher:
Nachher:
Hier ist auch meine benutzerdefinierte SurfaceView
-Klasse (ich denke, dass die benutzerdefinierte SurfaceView
den UI-Thread blockiert, um die verschwundenen Layouts zu zeichnen).
Mache ich etwas falsch? Wenn ja, kann jemand erklären, was es ist?
Ich bin froh, wenn mir jemand hilft. Danke.
Hinweis: Hier finden Sie zusätzliche Informationen zum Layout.
AdView
, die nicht im Layout enthalten ist. SYSTEM_UI_FLAG_HIDE_NAVIGATION
und SYSTEM_UI_FLAG_FULLSCREEN
flags wurden der Aktivität hinzugefügt und deswegen wurden in den entsprechenden Layouts Paddings gesetzt, um Überlappungen zu vermeiden. Tags und Links java android android-layout android-xml