2012-09-27 155 views
2

我正在用Java编写一个Android应用程序,该应用程序基本上可用作私人论坛的论坛阅读器。该应用程序显示线程列表,并且一旦用户选择一个线程,就会打开一个基本上由单个WebView组成的新Activity。该应用程序下载并解析论坛主题的源代码(html),然后返回包含所需信息(例如作者,html内容等)的“发布”项目列表。最后,我只是从该帖子列表中构建一些HTML并将其显示在WebView中。Android Webview - 如果图片太大,请调整图片大小

虽然这是行得通的,但图像存在问题:有时图像非常大,用户必须水平和垂直滚动以查看整个图像。我想将这些图像的大小调整为WebView的宽度(以便它们始终完全可见),并可选择将它们转换为打开全尺寸图像的超链接。

由于我自己解析了线程HTML,因此理论上可以使用每个img标记并为其添加一个“width = 100%”属性。那么问题是小图像(例如表情符号!)也被调整大小并且被炸得很大。我只想调整图片太大而无法在设备上显示。

我该如何做到这一点?我能想到的(但没有完全达到与所需的解决方案)的一些方法当然是:

  • 在WebView中显示它之前修改帖子内容的HTML,
  • 更改CSS样式表使的WebView用来显示文章内容
  • 添加JavaScript到的WebView源

基本上我有到HTML,CSS和Javascript完全访问权,并且我仍然无法弄清楚如何调整太大的图像(但不是太大的图像)。

缩放不是一个问题,因为它被禁用此WebView。

有没有人有任何想法如何实现这种效果?谢谢!

回答

2

您是否尝试在HTML文件中设置视图端口?

下面有你可能如何实现这样的例子,为高密度,中密度和低密度的设备你能够设置参数,例如最小化,最大规模等

function setViewPort() { 
    var viewport = document.querySelector("meta[name=viewport]"); 

    //high-density screen 
    if (window.devicePixelRatio == 1.5) { 
     viewport.setAttribute("content", "target-densitydpi=high-dpi, width=device-width, height=device-height, initial-scale=1.15, minimum-scale=1.15, maximum-scale=1.8"); 
    } 
    //medium-density screen 
    else if (window.devicePixelRatio == 1.00) { 
     viewport.setAttribute("content", "target-densitydpi=low-dpi, width=device-width, height=device-height, initial-scale=1.3, minimum-scale=1.3, maximum-scale=1.3"); 
    } 
    //low-density screen 
    else if (window.devicePixelRatio == 0.75) { 
     viewport.setAttribute("content", "target-densitydpi=device-dpi, width=device-width, height=device-height, maximum-scale=1.3"); 
    }} 

检查也是Android的文件Targeting Screens from WebApps

+0

这是非常有用的信息,但是它并没有真正回答这个问题。这将整个页面缩放以更好地适应目标屏幕分辨率,但仍不能解决大于视口的图像问题。 CSS最大宽度可能是最好的。 –