Android-Webview支持縮放並隱藏討厭的縮放控制條

轉載請標明出處:
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版本來隱藏縮放控制條了,謝謝大家!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章