我试图在WebView中加载只包含一张图片的html。and视图应该包含任何内容,因此我将宽度设置为"fill_parent“,将高度设置为"wrap_content”。
图片应该延伸到WebView的宽度,高度应该自动调整以保持高宽比,并且图片在WebView中是不可滚动的。为此,我将图片和html主体的样式设置为:
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忽略了页面加载后的任何高度设置。
任何帮助或建议都将是非常有用的,因为我在这方面度过了一个周末,但没有取得任何成功。
发布于 2014-01-22 05:05:06
在页面更改/加载之后,似乎确实需要重新设置高度。
我只是在玩这个bug,因为它困扰着我,我更像一个网络和移动应用程序开发人员。想要解决这个问题这样我就可以继续我的生活了。
在玩了一个多小时后.在页面更改/加载之后,似乎确实需要重新设置高度.我正在处理本地字符串并通过"WebView.loadData"加载它们。
下面是一些应该工作的示例代码?也许不是所有人,但这是我目前正在测试的.
还请注意,这是在使用"RelativeLayout",而使用"final"的做法并不总是像本例中所建议的那样(但暂时保持代码较短),并对缺少所有注释表示遗憾。
//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");请记住,这只是一个例子,说明目前对我有用的东西.所以还有几件事要记住
作为的HTML
通常,HTML/CSS应该不受限制地工作,因为在默认情况下,所有页面都会收缩到最小的维度。
https://stackoverflow.com/questions/20032804
复制相似问题