我爲Firefox OS開發了一個Web應用程序,但我想讓它在Android中「本地」運行。我的應用程序由一個對話框組成,它是一個div
,它在可見時填充整個頁面,我已經使用Firefox響應式設計工具進行了測試,並且它可以正確調整大小。當出現軟鍵盤時,由於對話框底部有一些按鈕,我希望對話框調整到左側的視口。WebView無法調整大小
我創建了一個只包含WebView
的單個活動的應用程序。我想鍵盤出現時,調整視圖大小,所以我用:
android:windowSoftInputMode="stateUnspecified|adjustResize"
這看起來是要對WebView
任何差異,當鍵盤是可見的。我在網上看,有很多人抱怨這個問題,但他們都有共同的東西,他們使用Theme.Black.NoTitleBar.Fullscreen
主題,我不是。我嘗試了所有解決這個問題的方法,但都沒有成功。
然後我開始懷疑WebView
中是否有一個錯誤,這意味着它沒有調整大小。所以,我寫了一個定製View
,它在onLayout
中打印了尺寸。
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
Log.d(TAG, t + " " + r + " " + b + " " + l);
}
當然,視圖在鍵盤出現和失望時正確調整大小。所以,我做了一些更多的研究,並且發現了一些答案,說你需要隱藏WebView
,重新加載它,然後再顯示它。
@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);
}
再次,這並沒有解決我的問題。 (作爲一個方面,這是一個帶有單個.html文件的Web應用程序,JS導致應用程序中所有元素的狀態在運行時發生更改,因此不能重新加載它。)
My問題在於,在鍵盤可見時,是否有人知道一旦內容被加載後調整WebView
的方法。
我從來沒有遇到過這個問題。我的webview和它的內容總是正確調整大小。你正在測試什麼設備?此外,我使用「stateHidden | adjustResize」 –
哇...你是對的!我創建了一個空的html頁面,其中包含一個固定的div,並按照預期調整大小。問題是我必須使用'position:absolute;'由於WebKit中的一個錯誤導致'fixed'元素不會對任何'-webkit-transform'做出反應,所以我必須找到另一種方式。 –
很高興爲您提供幫助。一般情況下,我發現使用WebView的問題太多了(特別是在設備之間),並且會避免不惜一切代價使用它們。 –