Webview自適應螢幕

2021-06-22 04:36:07 字數 1413 閱讀 4219

第一種: 

settings.setusewideviewport(true); 

settings.setloadwithoverviewmode(true); 

第二種: 

websetting settings = webview.getsettings(); 

settings.setlayoutalgorithm(layoutalgorithm.single_column); 

把所有內容放在webview等寬的一列中。(可能會出現頁面中鏈結失效) 

第三種: 

displaymetrics metrics = new displaymetrics(); 

getwindowmanager().getdefaultdisplay().getmetrics(metrics); 

int mdensity = metrics.densitydpi; 

if (mdensity == 120) else if (mdensity == 160) else if (mdensity == 240)  

這方法可以讓你的頁面適應手機螢幕的解析度,完整的顯示在螢幕上,可以放大縮小。 

例如適合800px寬度的頁面,如果通過webview在1024px的螢幕寬度下顯示時,內容()會被放大,整體頁面會超出螢幕。 

試了將webview的settings中的縮放都關閉了也不行。 

後來發現了websettings.zoomdensity這個設定,並在文件中找到了以下說明: 

enum for specifying the webview's desired density. far makes 100% looking like in 240dpi medium makes 100% looking like in 160dpi close makes 100% looking like in 120dpi 

這樣就能很好的說明以上問題的原因了,又是密度惹的禍... 

預設webview的zoomdensity是medium,對應160dpi。而我之前800px寬度的螢幕對應的是60dpi,1024px寬度的螢幕對應的是240dpi。所以,頁面在高解析度的螢幕上被放大了1.5倍。這個和自縮放的機制是一樣的。 

於是,只要通過當前螢幕的密度,動態設定該屬性就能適應不同螢幕(當然,預設你的頁面是針對160dpi的密度大小設計的),即可解決: 

int screendensity = getresources().getdisplaymetrics().densitydpi ;   

websettings.zoomdensity zoomdensity = websettings.zoomdensity.medium ;   

switch (screendensity)  

websettings.setdefaultzoom(zoomdensity); 

Webview 自適應螢幕

第一種 websettings settings webview.getsettings settings.setlayoutalgorithm layoutalgorithm.single column layoutalgorithm是乙個列舉用來控制頁面的布局,有三個型別 1.narrow co...

Android 中Webview 自適應螢幕

原文 webview中右下角的縮放按鈕能不能去掉 settings.setdisplayzoomcontrols false 隱藏webview縮放按鈕 讓webview載入的頁面居中顯示有我知道的幾種方法 第一種方法 websettings settings webview.getsettings...

webView 自適應螢幕 的實現

讓webview載入的頁面居中顯示有我知道的幾種方法 第一種方法 websettings settings webview.getsettings settings.setlayoutalgorithm layoutalgorithm.single column layoutalgorithm是乙個...