首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包装内容没有工作,而且webview在加载页面后不能设置高度

包装内容没有工作,而且webview在加载页面后不能设置高度
EN

Stack Overflow用户
提问于 2013-11-17 15:58:03
回答 1查看 1.2K关注 0票数 1

我试图在WebView中加载只包含一张图片的html。and视图应该包含任何内容,因此我将宽度设置为"fill_parent“,将高度设置为"wrap_content”。

图片应该延伸到WebView的宽度,高度应该自动调整以保持高宽比,并且图片在WebView中是不可滚动的。为此,我将图片和html主体的样式设置为:

代码语言:javascript
复制
body{
margin:0px; 
padding:0px;  
}
img {
margin:0px;
padding:0px;
width:100%;
height:auto;
}

这是可行的,但是对于一些图片,在WebView底部留下了一个空白。这是随机发生的,例如,它也可能发生,图片是非常小的,它的工作。

我也尝试了很多不同的方法来达到这个目的:

1-在img“加载”的js事件中,用图片大小返回到android代码,计算出WebView的相应维度,并从代码中设置它。<--没有任何效果。<-为什么?在设置高度<--没有结果之后,我还尝试在WebView上调用WebView();。

2-在img“加载”js事件上,计算WebView的相应维度,然后调用"window.resizeTo(w,h)“<有趣的是,如果你在IE上尝试它,它就能完美地工作。

还有一些其他的窍门。但是,结果要么是WebView没有包装内容,要么是WebView忽略了页面加载后的任何高度设置。

任何帮助或建议都将是非常有用的,因为我在这方面度过了一个周末,但没有取得任何成功。

EN

回答 1

Stack Overflow用户

发布于 2014-01-22 05:05:06

在页面更改/加载之后,似乎确实需要重新设置高度。

我只是在玩这个bug,因为它困扰着我,我更像一个网络和移动应用程序开发人员。想要解决这个问题这样我就可以继续我的生活了。

在玩了一个多小时后.在页面更改/加载之后,似乎确实需要重新设置高度.我正在处理本地字符串并通过"WebView.loadData"加载它们。

下面是一些应该工作的示例代码?也许不是所有人,但这是我目前正在测试的.

还请注意,这是在使用"RelativeLayout",而使用"final"的做法并不总是像本例中所建议的那样(但暂时保持代码较短),并对缺少所有注释表示遗憾。

代码语言:javascript
复制
//LOCATE OUR WEBVIEW
final WebView tmpWeb=(WebView) findViewById(R.id.myWebView1);

// WEBVIEW LISTENER: DETECT WHEN PAGE HAS LOADED
tmpWeb.setWebChromeClient(new WebChromeClient() {
    public void onProgressChanged(WebView view, int progress) {
        if (progress==100) {
            // PAGE HAS LOADED, SET HEIGHT BACK TO WRAP_CONENT
            tmpWeb.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,RelativeLayout.LayoutParams.WRAP_CONTENT));

            // MY NEW CODE: CONTINUE THE APPLICATION/GUI/USER
            // Here we would re-enable buttons/gui's and so on.
        }
    }
}

// CHANGE WEBVIEW HEIGHT TO 20 - NOTHING SHOULD HAPPEN BELOW THIS CODE
tmpWeb.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,20));
tmpWeb.loadData("<p>My HTML</p>", "text/html", "utf-8");

请记住,这只是一个例子,说明目前对我有用的东西.所以还有几件事要记住

  • 通过用户单击加载页面时,请确保该按钮不会双击“运行两次”。
  • 在当前页面加载并达到100%之前打开另一个页面/加载数据
  • 如果页面没有加载..。我认为在这个过程中不会达到百分之百
  • 等待图片加载(考虑使用CSS进行预调整/定位)
  • 其他动态网页内容将在加载页面后调整大小(google this)
  • 以及任何在页面加载后更改页面大小后可能发生的事情。

作为的HTML

通常,HTML/CSS应该不受限制地工作,因为在默认情况下,所有页面都会收缩到最小的维度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20032804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档