2010-07-23 41 views
9

Trong ứng dụng của tôi, tôi hiển thị hình ảnh nhờ một webView. Vì vậy, đối với mỗi hình ảnh tôi tạo mã HTML nhỏ mà tôi tải với webView. Vì vậy, mã html của tôi bao gồm về cơ bản trong một thẻ img (với đường dẫn đến hình ảnh của tôi).Hình ảnh vừa màn hình trong một WebView

Hình ảnh của tôi có kích thước khác nhau, đó là lý do tại sao tôi muốn đặt thu phóng trên webView của mình để vừa với chiều rộng của hình ảnh theo chiều rộng của webView. Vì vậy, người dùng không phải phóng to hoặc thu nhỏ để có thể xem toàn bộ hình ảnh.

Có cách nào để đạt được điều đó không?

Cảm ơn.

+0

Tôi đang gặp vấn đề tương tự. Bạn đã giải quyết chưa? – JochenJung

+1

Tôi rất tiếc nhưng tôi vẫn chưa giải quyết được. Tôi có giải pháp ở đây: http://developer.android.com/guide/webapps/targeting.html Khi họ nói rằng tôi đã thêm thẻ "width = device-width" vào mã HTML của tôi nhưng nó không hoạt động: (Tôi vẫn đang tìm kiếm một giải pháp. – Trox

+0

Xin lỗi tôi. Bạn đã giải quyết điều này cho đến bây giờ chưa? – Yeung

Trả lời

0

Có lý do nào bạn đang sử dụng WebView để thực hiện việc này không? Với ImageView, bạn có thể đặt scaleType để vừa với hình ảnh với kích thước của ImageView.

+8

nguyên nhân của zoom tích hợp và cuộn ngang/dọc. – Trox

+0

hoặc Hộp thoại có hình ảnh? Nó điên rồ phải không !? Ai làm điều đó. – JoxTraex

3

đó đã làm các trick cho tôi:

webView.setInitialScale(30); 
WebSettings webSettings = webView.getSettings(); 
webSettings.setUseWideViewPort(true); 
+0

Cảm ơn bạn đã trả lời. Nếu tôi sử dụng điều này, bây giờ bức ảnh lớn của tôi (khoảng 1000px * 2000px) là trung tâm nhưng hình ảnh nhỏ của tôi (với chiều rộng 320 px) trở nên thực sự nhỏ và tôi phải phóng to để xem chúng. – Trox

1

Bạn có thể sử dụng một chút jQuery trong trang web để đạt được nó là tốt.

Cái gì như:

$(document).ready(function(){ 
    var windowWidth = $(window).width()+"px"; 
    $("#imagID").width(windowWidth); 
}); 
4

Nếu bạn đang creaing mã HTML (mà bạn nói rằng bạn đang có), bạn có thể gian lận:

Trong đoạn code html:

img src="xxx" width="100% > 
+0

Thật là một hack đẹp và làm việc ;-) –

1

Tôi tìm thấy một linh hồn.

sử dụng phép tính này.

thiết bị-width * (152/mật độ)

lấy device-width và mật độ sử dụng displayMetrics.widthPixels và displayMetrics.densityDpi

bộ tính như chiều rộng trong thẻ img

giá trị 152 là ban đầu là 160 nhưng khi 160 được sử dụng, có vẻ như hình ảnh lớn hơn màn hình.

kết quả là, hình ảnh ban đầu vừa với màn hình và phóng to hoạt động tốt.

1

Có một lý do tại sao bạn không chỉ cần sử dụng một số javascript để vượt qua trong những hình ảnh vào ứng dụng Android và mang đến một Dialog tùy biến với nhiều hình ảnh trong hộp thoại đó để nó quy mô theo các nội dung.

Cá nhân, tôi nghĩ giải pháp này là thanh lịch hơn cho cách tiếp cận của bạn.

2

gì làm việc cho tôi là thế này: Tôi đọc rằng để phù hợp với chiều rộng của màn hình bạn nên thêm này sang HTML hoặc xml của bạn trong lĩnh vực này:

width="100%" 

Vì vậy, những gì tôi đã làm được, thay vì của việc phóng to và thu phóng hình ảnh, tôi nhận được xml, đặt nó trong một StringBuilder, tìm thấy src = "https://blablabla.com/image.png" có nghĩa là bên trong lĩnh vực này và ngay trước khi 'src' chuỗi con tôi chèn 'width =' 100% '', sau đó y thiết WebView của tôi với StringBuilder, mã mi là thế này:

public void setWebViewWithImageFit(String content){ 

     // content is the content of the HTML or XML. 
     String stringToAdd = "width=\"100%\" "; 

     // Create a StringBuilder to insert string in the middle of content. 
     StringBuilder sb = new StringBuilder(content); 

     int i = 0; 
     int cont = 0; 

     // Check for the "src" substring, if it exists, take the index where 
     // it appears and insert the stringToAdd there, then increment a counter 
     // because the string gets altered and you should sum the length of the inserted substring 
     while(i != -1){ 
      i = content.indexOf("src", i + 1); 
      if(i != -1) sb.insert(i + (cont * stringToAdd.length()), stringToAdd); 
      ++cont; 
     } 

     // Set the webView with the StringBuilder: sb.toString() 
     WebView detailWebView = (WebView) findViewById(R.id.web_view); 
     detailWebView.loadDataWithBaseURL(null, sb.toString(), "text/html", "utf-8", null); 
} 

Hy vọng điều này giúp tôi mất vài giờ để tìm ra cách giải quyết vấn đề này

Các vấn đề liên quan