• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            xiaoguozi's Blog
            Pay it forword - 我并不覺的自豪,我所嘗試的事情都失敗了······習(xí)慣原本生活的人不容易改變,就算現(xiàn)狀很糟,他們也很難改變,在過程中,他們還是放棄了······他們一放棄,大家就都是輸家······讓愛傳出去,很困難,也無法預(yù)料,人們需要更細(xì)心的觀察別人,要隨時注意才能保護(hù)別人,因為他們未必知道自己要什么·····
            Android WebView 當(dāng)文本框獲取焦點(diǎn)后自動放大,但這種自動放大不是我想要的。這并不是android的bug,而是他的正常處理

                這是我最近兩個星期面臨的一個比較棘手的Bug,目前國內(nèi)外都沒有大牛提供很好的解決方式。這里,我今天花了大半天時間來解決這個問題。

             

                 之所以出現(xiàn)這種情況,主要是當(dāng)文本框獲取到焦點(diǎn)后,鍵盤自動彈出,會執(zhí)行WebView的displaySoftKeyboard 方法,這個方法會把縮小的網(wǎng)頁恢復(fù)到正常情況(也就是說縮小的網(wǎng)頁放大),但是我目前的項目都是不允許頁面縮放的,所以一旦頁面放大后就無法恢復(fù)。 這里感謝國外的一個朋友的帖子回復(fù)

            http://stackoverflow.com/questions/3702805/is-there-a-way-to-disable-the-zoom-feature-on-input-fields-in-webview/7214199#7214199 。

             

            不多說,直接上代碼,如果想知道原因,看我后續(xù)的blog。 <!--EndFragment-->

            <!--EndFragment-->

             

            解決原理:

            通過反射,拿到WebView的一個私有屬性mDefaultScale,并在WebView失去焦點(diǎn)的時候,修改它的值,已達(dá)到網(wǎng)頁不放大的效果。

             

                 view.setInitialScale(???); //???代表隨便多少,小于一百才會有我說的這個bug。

             

             

            <!--EndF-->

               解決方案如下:

            Java代碼  收藏代碼
            1. videoNavigation_WV.setOnFocusChangeListener(new View.OnFocusChangeListener() {  
            2.     @Override  
            3.     public void onFocusChange(View v, boolean hasFocus) {  
            4.         if(hasFocus)  
            5.         {  
            6.             try {  
            7.                 Field defaultScale = WebView.class.getDeclaredField("mDefaultScale");  
            8.                 defaultScale.setAccessible(true);  
            9.                 //WebViewSettingUtil.getInitScaleValue(VideoNavigationActivity.this, false )/100.0f 是我的程序的一個方法,可以用float 的scale替代  
            10.                 defaultScale.setFloat(videoNavigation_WV , WebViewSettingUtil.getInitScaleValue(VideoNavigationActivity.this, false )/100.0f);  
            11.             } catch (SecurityException e) {  
            12.                 e.printStackTrace();  
            13.             } catch (IllegalArgumentException e) {  
            14.                 e.printStackTrace();  
            15.             } catch (IllegalAccessException e) {  
            16.                 e.printStackTrace();  
            17.             } catch (NoSuchFieldException e) {  
            18.                 e.printStackTrace();  
            19.             }   
            20.         }  
            21.     }  
            22. });  
              <!--EndFragmen-->

                大家如果想利用我這段代碼,我這里面的defaultScale.setFloat(WebView,float), 這個float值是你初始化的時候的scale值。跟你的CSS body值有一定的關(guān)系。假如body值 是1920*1080 而你現(xiàn)在是顯示在1280*720的屏幕上,那么這個scale 的float值就是0.666667。就是你的現(xiàn)在的縮放頁面與正常情況先顯示的大小的比(縮放比),大家可以用頁面第一次加載的時候通過 getScale()值獲取。

               

                代碼還有很多需要優(yōu)化的地方,比如反射拿屬性,其實(shí)只要做一次,設(shè)置可以做多次,這里只是一個Demo,覺得代碼垃圾的話我發(fā)個改好的工程給你。

             

               有木有做android TV 的 ,加群87154410,歡迎歡迎。 博客剛開始寫,希望大家支持。

            寫都比較簡略,大家可以提建議,歡迎留言

            posted on 2012-04-20 21:34 小果子 閱讀(4619) 評論(0)  編輯 收藏 引用 所屬分類: Android & Ios
            久久久人妻精品无码一区| 久久久国产精品网站| 国产午夜电影久久| 久久夜色精品国产噜噜麻豆| 老司机午夜网站国内精品久久久久久久久| 99国产欧美久久久精品蜜芽| 色综合久久久久综合体桃花网| 亚洲伊人久久综合影院| 久久亚洲2019中文字幕| 久久亚洲av无码精品浪潮| 久久久久久A亚洲欧洲AV冫| 91精品国产高清久久久久久国产嫩草 | 色偷偷88888欧美精品久久久| 久久99国产一区二区三区| 99久久国产综合精品成人影院| 亚洲乱亚洲乱淫久久| 久久香蕉一级毛片| 天天综合久久久网| 国产精品99久久久久久www| 久久99久久无码毛片一区二区| 91精品观看91久久久久久| 久久免费香蕉视频| 亚洲中文字幕伊人久久无码| 久久亚洲国产精品成人AV秋霞| 欧美日韩久久中文字幕| 色综合久久综合中文综合网| 久久777国产线看观看精品| 97精品伊人久久久大香线蕉| 久久久免费观成人影院| 区久久AAA片69亚洲| 久久久久久亚洲AV无码专区| 国产精品久久久久久| 国产巨作麻豆欧美亚洲综合久久 | 精品伊人久久大线蕉色首页| 亚洲va中文字幕无码久久| 97久久超碰国产精品2021| 国产成人精品久久亚洲| 三级三级久久三级久久| av无码久久久久久不卡网站| 狠狠久久综合伊人不卡| 久久午夜夜伦鲁鲁片免费无码影视|