2012-09-27 280 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最大寬度可能是最好的。 –