gpt4 book ai didi

android - 内容收缩时 WebView 不会降低高度

转载 作者:太空宇宙 更新时间:2023-11-03 11:15:57 24 4
gpt4 key购买 nike

我遇到了同样的问题 here .基本上我在垂直线性布局中有 text-webview-text ,如下所示:

 __________
| Textview |
|__________|
| WebView | <-can zoom
|__________|
| TextView |
|__________|

webview 有一个缩放开关,当内容放大时,webview 会调整到更大的尺寸并下推 textview:

 __________
| Textview |
|__________|
| |
| |
| WebView |
| |
|__________|
| TextView |
|__________|

到目前为止一切都很好。问题是,当我缩小到更小的尺寸时,webview 中的内容缩小了,但 webview 本身的尺寸仍然相同,留下了很大的空白空间:

 __________
| Textview |
|__________|
| WebView |
| |
| |
| |
|__________|
| TextView |
|__________|

我的问题也类似this one .调用 invalidate() 将不起作用,我不想在不破坏 Activity 的情况下重新创建 fragment (我实际上不知道如何)。我的问题是,当我将 webview 从大缩放到小时,如何更新/调整 webview 的高度? (注意:我动态添加了所有 View ,所以请告诉我如何以编程方式解决它。谢谢)

这个奇怪的问题在 Froyo 2.2 中不存在,但它是 JB 4.2.2 真实设备中的一个错误问题。

最佳答案

添加如下代码 fragment ,它会在页面加载时设置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/ 上的解决方案修改

关于android - 内容收缩时 WebView 不会降低高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16786064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com