轉載請標明出處:
http://blog.csdn.net/hanhailong726188/article/details/46717621
本文出自【海龍的博客】
之前轉載過Android webview相關的文章,Android Webview開發問題及優化彙總,這裏講解一下實現Webview縮放以及隱藏縮放控制條所遇到的問題和坑
要支持縮放,肯定要先支持Javascript,加如下代碼:
//支持JS
WebSettings settings = mWebView.getSettings();
settings.setJavaScriptEnabled(true);
重點來了,要想支持縮放,要加如下代碼支持
//支持屏幕縮放
settings.setSupportZoom(true);
settings.setBuiltInZoomControls(true);
其中settings.setBuiltInZoomControls(true)必須要加,不然縮放不起作用,筆者就曾在這掉過坑
經過上述代碼,就可以實現webview縮放了,代碼很簡單,但是又有一個蛋疼的問題,那就是在你縮放的時候webview右下角會出現一個討厭的縮放控制條,如下圖所示:
我們怎樣去掉它呢,在Android3.0之後實現非常簡單,加一句代碼就可以了,如下代碼:
//不顯示webview縮放按鈕
settings.setDisplayZoomControls(false);
其實到這裏本文就應該到此爲止了,但有的同學問,你這個只兼容到3.0以上版本,我要是兼容到2.x版本呢?我想說的是,其實沒有必須再兼容到2.x版本了,2.x的用戶量很少了,4.x以上的用戶已經佔到94%以上了,下面看AndroidStudio統計的各個平臺版本的用戶使用比率:
所以說,我們沒有必要兼容2.x了,就像IOS開發只兼容到IOS7版本就OK了,但是有的同學又說,我有強迫症,我就想兼容到2.x版本,其實解決方案網上都有了,這裏用到了java反射的知識,通過反射來獲取私有的屬性控件mZoomButtonsController,然後就其setVisibility(View.GONE)隱藏就可以了,下面貼出代碼實現:
public void setZoomControlGone(View view){
Class classType;
Field field;
try {
classType = WebView.class;
field = classType.getDeclaredField("mZoomButtonsController");
field.setAccessible(true);
ZoomButtonsController mZoomButtonsController = new ZoomButtonsController(view);
mZoomButtonsController.getZoomControls().setVisibility(View.GONE);
try {
field.set(view, mZoomButtonsController);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
經過上面的反射代碼,就可以達到兼容2.x版本來隱藏縮放控制條了,謝謝大家!