2015-09-06 12 views
6

Ich habe ein WebView (innerhalb eines Fragments in einem ViewPager mit SlidingTabLayout).AdjustResize funktioniert nicht nach dem Ablehnen der Tastatur durch Klicken außerhalb der Tastatur

Wenn Sie WebView zum Eingeben verwenden, möchte ich die Größe des Layouts ändern, um sicherzustellen, dass die Eingabe sichtbar ist.

Wenn ich auf eine Texteingabe im WebView klicke, erscheint das Softkeyboard und das Layout ändert sich. Ich kann meinen Text eingeben und mit der Return-Taste des Softkeyboards senden oder die Eingabe mit der Zurück-Taste abbrechen. Danach verschwindet die Tastatur und das Layout ändert sich wieder. Korrigieren Sie AdjustResize Verhalten.

Wenn jedoch durch Klicken außerhalb des Softkeyboard die Tastatur zu entlassen (zB wenn in der WebView eine Abfrage in Google und drücken Sie die Schaltfläche Suchen Eingabe), um die Tastatur versteckt und es dauert ca. 2-3 Sekunden für das Layout (Abfahrt, um die Größe eine Leerstelle für 2-3 Sekunden am unteren Rand meines Layouts). Danach, wenn der Texteingabe ausgewählt wird, überlagert die Tastatur das WebView (adjustPan).

Wie kann ich sicherstellen, dass beim Zurückweisen der Tastatur durch Drücken der WebView das Verhalten adjustResize beibehalten wird.

Ich habe versucht, Neueinstellung AdjustResize (beispielsweise von OnTouch), aber dies hat keinen Einfluss:

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

ich auch die following solution habe versucht, aber das gibt keine Veränderung.

Außerdem denke ich, dass dies wahrscheinlich kein Fokusproblem ist (da die Tastatur angezeigt wird und das Webview reagiert). Und ich frage Fokus von meiner Ansicht:

webView.setFocusable(true); 
    webView.setFocusableInTouchMode(true); 
+0

Ich möchte ein neues Projekt erstellen, Code kopieren und einfügen und sehe das Problem auf meinem Gerät. Könnten Sie eine Bearbeitung vornehmen, damit dies möglich ist? – NecipAllef

+0

@NecipAllef Ich habe bereits einige Dateien gepostet. Aber wenn Sie möchten, kann ich Ihnen mein komplettes Projekt schicken. E-Mail (24HR) l: [email protected] – Mdlc

+0

Ich habe Ihren WebView-Quellcode gesehen und es waren ungefähr 1.2k Codezeilen und ich glaube, die meisten davon sind nicht einmal auf Ihr Problem bezogen. Wenn Sie einen Code bereitstellen können, mit dem wir das Problem beobachten können, aber auch nicht schwer zu kompilieren oder zu debuggen sind, können Sie schneller Hilfe erhalten. Ich schlage vor, Sie erstellen ein Beispielprojekt und teilen es. Ich glaube, dass es über Github möglich ist. – NecipAllef

Antwort

0

Es stellte sich heraus, dass, wenn Sie das Layout Übersetzungen auf der WebView ausführen oder wenn das Layout der WebView geändert indirekt (zum Beispiel, wenn ein Element über dem WebView in einem RelativeLayout Ändern der Größe die bewirkt, dass die WeView auch geändert werden) zeigt und die Tastatur versteckt kann ein seltsames Verhalten verursachen:

  • AdjustResize Verhalten verloren gehen kann (wie in der Frage angegeben)
  • WebView die Größe des nach Tastatur nehmen kann länger als normal .
  • Leistung des WebView verringert

Was für mich dieses Problem gelöst, Layout-Änderungen in der WebView in irgendeiner Weise (Layout reload bei einer Drehung nicht erscheint, dies zu verursachen) zu verhindern war. In meinem Fall habe ich die Toolbar ein- und ausgeblendet, wodurch die Größe der WebView geändert wurde (und den Bildschirm füllte).

Verwandte Themen