2012-05-29 30 views
3

正試圖找出最大滾動位置WebView可以達到,我試過webView.pageDown(true)但結果是延遲的(我不能向下滾動,然後向上的盈方用戶,而且這種方法每次)不工作,我也試着webView.getContentHeight()和高度是不正確的阿拉伯語內容。檢測Webview滾動是否到達末端

請諮詢

+0

你爲什麼想知道最大滾動位置? – springrolls

+0

想使從'WebView'內容頁面,用戶必須不通過內容滾動,我們必須讓它頁面,所以當我使用'scrollTo'我不能想,如果我達到了目的或不向下滾動,這是要求 –

回答

10

好吧,我想出了答案

你可以使用

(INT)Math.floor(webView.getContentHeight()* webView的真實內容的高度。的getScale());

當你得到真正的高度

,那麼就重寫滾動方法的WebView聽滾動事件,如果滾動達到真正的高度,網頁視圖是滾動的底部。

+0

@Override \t公共布爾onScroll(MotionEvent E1,E2 MotionEvent,浮子distanceX,浮法distanceY){ \t \t INT lenght =(int)的Math.floor(WebView1.getContentHeight()* WebView1.getScale()); \t \t \t \t返回FALSE; \t}你怎麼來了這個知道頁面已經達到結束....... –

+0

@VipinSahu見我的回答 http://stackoverflow.com/questions/10956443/android-making-a - 按鈕 - 可見 - 一次 - webview - 完成 - 滾動 爲一個全面的解決方案。 – karora

+0

WebView.getScale已棄用,我們應該使用getScaleY和getScaleX。 – shalafi

-1

加載/可見按鈕僅在網頁視圖達到/滾動底部。

創建JavaScript類:

public class JavaScriptInterface { 

    @android.webkit.JavascriptInterface 
    public void didScrollToBottom() { 
    Log.d(TAG, "Scroll to Bottom"); 
    myHandler.post(new Runnable() { 
     @Override 
     public void run() { 
     btnAccept.setVisibility(View.VISIBLE); 

      } 
     }); 
     } 
    } 

在的onCreate():

final JavaScriptInterface jsInterface = new JavaScriptInterface(); 
myWebView.addJavascriptInterface(jsInterface, "AndroidFunction"); 
5
@Override 
public void onScroll(int l, int t) { 
    int height = (int) Math.floor(webView.getContentHeight() * webView.getScale()); 
    int webViewHeight = webView.getHeight(); 
    int cutoff = height - webViewHeight - 10; // Don't be too strict on the cutoff point 
    if (t >= cutoff) { 
     setDisclaimerButtonEnabled(true); 
    } 
} 

時所需的非嚴格,是因爲我對三星S5發現最下方滾動值距離最底層的價值只有1個像素值!

+1

這是由Math.floor()引起的。嘗試Math.round() – deviant