内容缩小时WebView不会降低高度
Posted
技术标签:
【中文标题】内容缩小时WebView不会降低高度【英文标题】:WebView does not reduce height when content shrink 【发布时间】:2013-05-23 01:42:14 【问题描述】:我遇到了同样的问题here。基本上我在垂直线性布局中有text-webview-text,如下所示:
__________
| Textview |
|__________|
| WebView | <-can zoom
|__________|
| TextView |
|__________|
webview 有一个缩放开关,当内容放大时,webview 会调整到更大的尺寸并下推 textview:
__________
| Textview |
|__________|
| |
| |
| WebView |
| |
|__________|
| TextView |
|__________|
到目前为止一切都很好。问题是,当我缩小到较小的尺寸时,webview 内的内容会缩小,但 webview 本身仍然是相同的大小,留下一个很大的空白空间:
__________
| Textview |
|__________|
| WebView |
| |
| |
| |
|__________|
| TextView |
|__________|
我的问题也和this one类似。调用 invalidate() 不起作用,我不想在不破坏活动的情况下重新创建片段(我实际上不知道如何)。我的问题是,当我将 web 视图从大缩放到小时,如何更新/调整其高度? (注意:我是动态添加所有视图的,所以请告诉我如何以编程方式解决它。谢谢)
这个奇怪的问题在 Froyo 2.2 中不存在,但在 JB 4.2.2 真实设备中是一个 bug。
【问题讨论】:
这个问题的答案似乎正是您要寻找的。这正是我想要的。 ***.com/questions/15546416/… 【参考方案1】:添加如下代码sn-p,设置页面加载时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控件,当控件宽度较小时,自适应问题