Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android WebView在4.4版本以上無法獲取高度

Android WebView在4.4版本以上無法獲取高度

編輯:關於Android編程

在4.4以下的系統中,我們通常監聽webview滑動到底端的方法如下:


1,先重新webview,FoundWebView

public class FoundWebView extends WebView {
    ScrollInterface mt;

    public FoundWebView(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }
    public FoundWebView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public FoundWebView(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }
    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
        super.onScrollChanged(l, t, oldl, oldt);
        //Log.e("hhah",""+l+" "+t+" "+oldl+" "+oldt);
        mt.onSChanged(l, t, oldl, oldt);
    }
    
    public void setOnCustomScroolChangeListener(ScrollInterface t){
        this.mt=t;
    }
    
    /**
     * 定義滑動接口
     * @param t
     */
    public interface ScrollInterface {
        public void onSChanged(int l, int t, int oldl, int oldt) ;
    }
    
}


2,很少有人不自定義webview吧,直接調用系統的總是有一個地址欄太蛋疼了,所以一般都是在一個activity裡加載webview

 mWebView.setOnCustomScroolChangeListener(new ScrollInterface() {
            @Override
            public void onSChanged(int l, int t, int oldl, int oldt) {
                // TODO Auto-generated method stub
                webviewHight = mWebView.getContentHeight()*mWebView.getScale();
                //已經處於底端
                if((int)webviewHight == (mWebView.getHeight() + mWebView.getScrollY()) ){  
               
                   
                }
                //已經處於頂端
//                if (mWebView.getScaleY() == 0) {
//                   
//                }
            }
        });


3,在底端和頂端都可以操作,但是在4.4的系統中,我發現無論如何獲取的高度都會成這樣

(int)webviewHight > mWebView.getHeight() + mWebView.getScrollY()

在一個測試手機上發現差值總是1,其他手機沒測試


4,目前無法解決,但是考慮到底部顯示的話,我這裡就直接做了一個偏移,

  mWebView.setOnCustomScroolChangeListener(new ScrollInterface() {
            @Override
            public void onSChanged(int l, int t, int oldl, int oldt) {
                // TODO Auto-generated method stub
                webviewHight = mWebView.getContentHeight()*mWebView.getScale();
                //為解決4.4的系統無法獲取正確的高度加一個“<10”的
                if((int)webviewHight - (mWebView.getHeight() + mWebView.getScrollY()) < 10){  
                    //已經處於底端 10個偏移量
                    
                }
                //已經處於頂端
//                if (mWebView.getScaleY() == 0) {
//                  
//                }
            }
        });


這樣也可以解決4.4系統你在底部操作(其實也不是完全在底部)


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved