我試圖使用webview的滾動位置來確定SwipeRefreshLayout是否應該能夠刷新,除了一些網站例如https://jobs.lever.co/memebox,getScrollY()總是返回0.有沒有辦法確保我總能得到正確的滾動位置?WebView getScrollY()總是返回0
6
A
回答
1
您鏈接的網站有一個固定的標題。我的猜測是,頁面本身不滾動;裏面有一個容器。 WebView
無法檢查頁面上的每個可滾動容器,因此它看到頂級容器不滾動並假定整個事件都已修復。
如果你所需要的只是拉到刷新,我建議除了SwipeRefreshLayout
之外還增加一個刷新按鈕。
0
檢查您的網頁佈局。你的CSS中的position: relative;
可能是你問題的根源。相對定位導致在WebView中滾動出現問題。
2
也許你可以嘗試把它添加到您的自定義的WebView
只要告訴它的滾動
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
if(this.getScrollY() <= 0){
this.scrollTo(0,1);
}
break;
case MotionEvent.ACTION_UP:
break;
}
return super.onTouchEvent(event);
}
,然後覆蓋onScrollChanged
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);;
if (iWebViewScrollListener != null && t == 0) {
iWebViewScrollListener .onTop();
} else if (mIWebViewScroll != null && t != 0) {
iWebViewScrollListener .notOnTop();
}
}
添加一個頂級聽衆打電話滾動時。什麼時候是onTop()
使用setEnabled(true)
爲SwipeRefreshLayout,否則setEnabled(false)
+0
我知道我們被告知要避免謝謝你的評論,但我不能幫助這個..我sp試圖弄清楚這一點,感謝百萬隊友! – Tssomas 2017-07-13 17:22:42
0
這有點老了,但是這個問題依然存在。對於任何人想知道的,我通過下面的方式解決了這個問題。
在GestureListener
:
private class GestureListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
if(distanceY>0) webView.scrollBy(0,1);
else webView.scrollBy(0,-1);
}
}
現在,可以啓用/禁用swipeRefreshLayout
如下正確使用getScrollY
:
swipeLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
ViewTreeObserver observer = swipeLayout.getViewTreeObserver();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
observer.removeOnGlobalLayoutListener(this);
} else {
observer.removeGlobalOnLayoutListener(this);
}
observer.addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
if (webView.getScrollY()==0) {
swipeLayout.setEnabled(true);
} else {
swipeLayout.setEnabled(false);
}
}
});
}
});
相關問題
- 1. WebView.getContentHeight()總是返回0
- 2. ExpandableListView.getPackedPositionGroup總是返回0
- 3. $ parent。$ index總是返回0
- 4. Scope_Identity()總是返回0
- 5. mysql_num_rows總是返回0
- 6. Rainmeter Calc總是返回0
- 7. SqlCommand.ExecuteNonQuery()總是返回0
- 8. 則getIdentifier()總是返回0
- 9. pdo lastInsertId()總是返回0
- 10. NSPopUpButtonCell indexOfSelectedItem總是返回0
- 11. timespec.tv_sec總是返回0
- 12. NSD_GetState總是返回0:NSIS
- 13. .numChildren()總是返回0
- 14. 的intValue總是返回0
- 15. Datagridview.selectedrows.count總是返回0?
- 16. datatable.rows.count總是返回0
- 17. mysqli_affected_rows總是返回0
- 18. C#&MySQL - 總是返回0
- 19. UILabel pointSize總是返回0
- 20. NSOutlineView rowForItem:總是返回0
- 21. sizeWithFont總是返回0
- 22. getUser總是返回0
- 23. 笨NUM_ROWS()總是返回0
- 24. getImageData總是返回0
- 25. NSSegmentedControl -selectedSegment總是返回0
- 26. mysql_insert_id()總是返回0
- 27. facebook user_id返回0總是
- 28. event.charCode總是返回0
- 29. cvFindContours總是返回0 - OpenCV
- 30. mysql_errno總是返回0
這可能重複:http://stackoverflow.com/questions/ 2132370/android-listview-getscrolly-do-it-work – 2015-03-18 22:45:06
不幸的是,我已經檢查過這個鏈接,它不能告訴我我需要什麼 – 2015-03-18 23:17:36