Einige Layouts zeichnen nicht, wenn die Tastatur ausfällt

8

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).

%Vor%

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.

  1. Das Layout der Fußzeile hatte ursprünglich eine AdView , die nicht im Layout enthalten ist.
  2. 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.
  3. Und das Header-Layout hat 2 Toolbar-Ansichten, von denen eine in den obigen Bildern zu sehen ist.
JudgedPluto 30.01.2018, 11:17
quelle

1 Antwort

2

Versuche es im Manifest

android: windowSoftInputMode="adjustNothing"

%Vor%     
Nasimxon 06.02.2018, 11:42
quelle