Android教程 Webview自適應螢幕

2021-07-24 13:52:21 字數 1407 閱讀 3762

第一種:

settings.setusewideviewport(true);

settings.setloadwithoverviewmode(true);

第二種:用於4.4以下機型

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);

控制項縮小android控制項之WebView

工作之餘抽點時間出來寫寫博文,希望對新接觸的朋友有幫助。今天在這裡和大家一起學習一下控制項縮小 發現這個控制項挺好用,能自已控制進度條,而且這個控制項的功能非常壯大,後續再另說 先上個簡單的 每日一道理 青春是用意志的血滴和拼搏的汗水釀成的瓊漿 歷久彌香 青春是用不凋的希望和不滅的嚮往編織的彩虹 絢...

Chromium 81版本編譯webview

webview是可以編譯debug和release版本的。如果只是在除錯的話,一定要以預設的debug編譯,因為webview的release版本,最終會把所有的動態庫合成乙個libwebviewchromium.so。而debug版本,則把每乙個module的功能都區分成了很多個cr.so 例如l...

android開發教程 Dialog

1.該效果是當按返回按鈕時彈出乙個提示,來確保無誤操作,採用常見的對話方塊樣式。建立對話方塊方法dialog protected void dialog builder.setnegativebutton 取消 new onclicklistener builder.create show 在onk...