Sto cercando di utilizzare la posizione di scorrimento della vista Web per determinare se SwipeRefreshLayout dovrebbe essere in grado di aggiornare, ad eccezione di alcuni siti Web, ad es. https://jobs.lever.co/memebox, getScrollY() restituisce sempre 0. C'è un modo per assicurarmi che otterrò sempre la posizione di scorrimento corretta?WebView getScrollY() restituisce sempre 0
risposta
Il sito collegato ha un'intestazione fissa. La mia ipotesi è che la pagina stessa non scorra; un contenitore al suo interno. Il WebView
non può ispezionare ogni contenitore scorrevole sulla pagina, quindi vede che il contenitore di livello superiore non scorre e presuppone che l'intera cosa sia corretta.
Se tutto ciò di cui hai bisogno è pull-to-refresh, ti consiglio di aggiungere un pulsante di aggiornamento oltre allo SwipeRefreshLayout
.
Controlla il tuo layout web. position: relative;
nel tuo CSS potrebbe essere la fonte del tuo problema. Il posizionamento relativo causa problemi con lo scorrimento in WebView.
Forse si può provare ad aggiungere questo alla vostra WebView personalizzato
solo dire che è lo scorrimento
@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);
}
e poi ignorare 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();
}
}
aggiungere un listener superiore richiamare durante lo scorrimento. Quando è onTop()
utilizzare setEnabled(true)
per SwipeRefreshLayout, altrimenti setEnabled(false)
So che ci viene detto di evitare commenti di ringraziamento, ma non posso aiutare questo .. Io sp possiamo cercare di capirlo, grazie un milione di compagno! – Tssomas
Questo è un po 'vecchio ma questo problema esiste ancora. Per chiunque si chieda, ho risolto questo facendo quanto segue.
In 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);
}
}
Ora è possibile abilitare/disabilitare il swipeRefreshLayout
correttamente utilizzando getScrollY
come di seguito:
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 Android getContentHeight() restituisce sempre 0
- 2. Perché mysqli_insert_id() restituisce sempre 0?
- 3. MongoDB: WriteResult.getN() restituisce sempre 0?
- 4. "SELECT last_insert_rowid()" restituisce sempre "0"
- 5. Spiegare perché scrollTop() restituisce sempre 0 qui
- 6. Ottenere rotazione da ExifInterface restituisce sempre 0
- 7. selenio WebDriver Manager(). GetCookies() restituisce 0 sempre
- 8. Perché "n & 1 == 0" restituisce sempre false?
- 9. Location Android getBearing() restituisce sempre 0
- 10. Mysql - Il conteggio NULL restituisce sempre 0?
- 11. Il calcolo percentuale restituisce sempre 0
- 12. Android - getIdentifier restituisce sempre 0 (libreria + applicazione)
- 13. this.getClass(). GetFields(). Length; restituisce sempre 0
- 14. Application.OpenForms.Count = 0 sempre
- 15. IndexPathForCell di UITableView: restituisce sempre 0 come indexPath.row
- 16. perché select() restituisce sempre 0 dopo il primo timeout
- 17. XMLHttpRequest asincrono non funziona, restituisce sempre stato 0
- 18. Sql * plus restituisce sempre il codice di uscita 0?
- 19. Rails request.xhr? Restituisce 0
- 20. Perché systemLayoutSizeFittingSize restituisce (0, 0) per UITableViewCell?
- 21. textview.getLineCount sempre 0 in android
- 22. indexPath.row è sempre 0
- 23. Facebook getUser() restituisce 0
- 24. filesize() restituisce 0?
- 25. ContentResolver restituisce sempre null
- 26. getLoginStatus restituisce sempre not_authorized
- 27. ScaleGestureDetector.onTouchEvent restituisce sempre 'true'
- 28. perché orologio C() restituisce 0
- 29. cosa restituisce malloc (0)?
- 30. mysql_insert_id() restituisce 0
Possibile duplicato di questo: http://stackoverflow.com/questions/ 2132370/android-listview-getscrolly-fa-work –
Purtroppo avevo già controllato quel collegamento e non era in grado di dirmi cosa mi serviva –