内容缩小时,WebView不会降低高度
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内容缩小时,WebView不会降低高度相关的知识,希望对你有一定的参考价值。
我面对同样的问题here。基本上我有垂直线性布局的text-webview文本,如下所示:
__________
| Textview |
|__________|
| WebView | <-can zoom
|__________|
| TextView |
|__________|
webview具有缩放切换功能,当内容缩放时,更大的webview将调整为更大的尺寸并按下textview:
__________
| Textview |
|__________|
| |
| |
| WebView |
| |
|__________|
| TextView |
|__________|
到现在为止一切都很好。问题是,当我缩小到较小的尺寸时,webview内的内容会缩小,但webview本身仍然是相同的大小,留下了一个巨大的空白空间:
__________
| Textview |
|__________|
| WebView |
| |
| |
| |
|__________|
| TextView |
|__________|
我的问题也类似于this one。调用invalidate()将不起作用,我不想在不破坏活动的情况下重新创建片段(我实际上不知道如何)。我的问题是,当我将它从大到小缩放时,如何更新/调整webview的高度? (注意:我动态添加所有视图,所以请告诉我如何以编程方式解决它。谢谢)
这个奇怪的问题在Froyo 2.2中不存在,但它是JB 4.2.2真实设备中的一个问题。
答案
添加如下代码片段,它将在加载页面时设置webview的高度
private void setupWebView() {
webView.getSettings().setjavascriptEnabled(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
webView.loadUrl("javascript:MyApp.resize(document.body.getBoundingClientRect().height)");
super.onPageFinished(view, url);
}
});
webView.addJavascriptInterface(this, "MyApp");
}
@JavascriptInterface
public void resize(final float height) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
ViewGroup.LayoutParams lp = webView.getLayoutParams();
lp.width = getResources().getDisplayMetrics().widthPixels;
lp.height = (int) (height * getResources().getDisplayMetrics().density);
webView.setLayoutParams(lp);
}
});
}
从https://capdroid.wordpress.com/2014/08/07/resizing-webview-to-match-the-content-size/解决方案修改
以上是关于内容缩小时,WebView不会降低高度的主要内容,如果未能解决你的问题,请参考以下文章
android webview控件,当控件宽度较小时,自适应问题