ich eine Web-Anwendung für Firefox OS entwickelt habe, aber ich wollte es „nativ“ in Android laufen zu lassen. Meine Anwendung besteht aus einer Dialogbox, die eine div
ist, die die gesamte Seite füllt, wenn sie sichtbar ist, was ich mit dem responsive Design-Tool von Firefox getestet habe und die Größe wird korrekt angepasst. Wenn eine Bildschirmtastatur angezeigt wird, möchte ich, dass sich der Dialog auf das verbleibende Ansichtsfenster ändert, da sich am unteren Rand des Dialogs einige Schaltflächen befinden.WebView ist die Größe nicht
Ich habe eine Anwendung mit einer einzigen Aktivität erstellt, die nur eine WebView
enthält. Ich wollte die Ansicht, um die Größe, wenn die Tastatur erscheint, so dass ich verwendet:
android:windowSoftInputMode="stateUnspecified|adjustResize"
, die keinen Unterschied zu den WebView
zu machen schien, wenn die Tastatur sichtbar war. Ich schaute online und es gab viele Leute, die sich über dieses Problem beschwerten, aber sie hatten alle das gleiche gemeinsam, sie benutzten das Theme.Black.NoTitleBar.Fullscreen
Thema, was ich nicht bin. Ich habe alle Lösungen für dieses Problem ausprobiert, aber keiner von ihnen hat funktioniert.
Ich begann dann zu fragen, ob es einen Fehler in WebView
gab, was bedeutete, dass es nicht die Größe änderte. Also, ich schrieb eine benutzerdefinierte View
, die die Abmessungen in onLayout
gedruckt.
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
Log.d(TAG, t + " " + r + " " + b + " " + l);
}
Und tatsächlich, die Ansicht wurde korrekt skaliert, wenn die Tastatur erschien und nicht mehr verfügbar war. Also habe ich ein wenig mehr recherchiert und ein paar Antworten gefunden, die besagten, dass Sie die WebView
verstecken, neu laden und dann wieder anzeigen müssen.
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
Log.d(TAG, t + " " + r + " " + b + " " + l);
mWebView.setVisibility(View.GONE);
mWebView.layout(l, t, r, b);
mWebView.invalidate();
mWebView.reload();
mWebView.setVisibility(View.VISIBLE);
}
Auch dies löste mein Problem nicht. (Und nebenbei bemerkt ist dies eine Web-App mit einer einzelnen .html-Datei und JS bewirkt, dass sich der Status aller Elemente in der App zur Laufzeit ändert, daher ist das Neuladen keine Option.)
Mein Frage ist, ob jemand eine Art der Größenänderung eines WebView
weiß, sobald der Inhalt geladen wurde, wenn die Tastatur sichtbar ist.
Ich hatte dieses Problem noch nie zuvor. Mein Webview und sein Inhalt werden immer korrekt skaliert. Mit welchem Gerät testeest du? Außerdem verwende ich "stateHidden | adjustResize" –
Wow ... du hast Recht! Ich habe eine leere html-Seite mit einem 'fixed' positionierten div erstellt und die Größe wie erwartet geändert. Das Problem war, dass ich 'position: absolute;' wegen eines Fehlers in WebKit verwenden musste, der 'feste' Elemente dazu brachte, nicht auf'webkit-transform' zu reagieren, also muss ich einen anderen Weg finden. –
Ich bin froh zu helfen.Im Allgemeinen habe ich festgestellt, dass die Verwendung von WebView zu fehlerhaft ist (insbesondere zwischen Geräten), und es wird vermieden, sie um jeden Preis zu verwenden. –