Tom*_*ese 6 android resize webview android-webview
我已经为Firefox OS开发了一个Web应用程序,但我想让它在Android中"本机"运行.我的应用程序包含一个对话框,div它在可见时填充整个页面,我使用Firefox响应式设计工具进行了测试,并且它可以正确调整大小.当出现软键盘时,我希望对话框调整大小到剩下的视口,因为对话框底部有一些按钮.
我创建了一个包含一个只包含一个活动的应用程序WebView.我希望视图在键盘出现时调整大小,所以我使用了:
android:windowSoftInputMode="stateUnspecified|adjustResize"
Run Code Online (Sandbox Code Playgroud)
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);
}
Run Code Online (Sandbox Code Playgroud)
当然,当键盘出现和失望时,视图正确调整大小.所以,我做了一些更多的研究,我找到了一些答案,说你需要隐藏它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);
}
Run Code Online (Sandbox Code Playgroud)
再次,这并没有解决我的问题.(作为一个侧面点,这是一个带有单个.html文件的Web应用程序,JS会导致应用程序中所有元素的状态在运行时发生变化,因此重新加载它不是一种选择.)
我的问题是,WebView当键盘可见时,是否有人知道在加载内容后调整大小的方法.
问题原来是我position: absolute在position: fixed div. 外部尺寸div已正确调整,但内部尺寸未正确调整。我不得不使用的原因position: absolute是因为 WebKit 中有一个错误,这意味着你无法transform fixed定位 div。
| 归档时间: |
|
| 查看次数: |
4903 次 |
| 最近记录: |