1. Mitglieder surfen ohne Werbung auf Android-Hilfe.de! ✔ Jetzt kostenlos Mitglied in unserer Community werden.
  1. tefracky, 05.03.2018 #1
    tefracky

    tefracky Threadstarter App-Anbieter (kostenlos)

    Hallo zusammen,

    ich habe ein Problem mit WebView und ScrollRefresh. Es ist so, dass meine Webview sich grundsätzlich immer aktualisiert, auch wenn ich nur scrollen möchte. Eigentlich sollte das der untenstehende Code verhindern, aber die Ausgabe zeigt, dass für webView.getScrollY() immer 0 ausgegeben wird. Woran könnte das liegen bzw. wie lässt sich das Problem beheben? Meine Vermutung ist, dass es etwas damit zu tun hat, dass bei manchen Webseiten die Kopfzeile gefixt ist und dass deswegen immer 0 rauskommt. Allerdings hilft mir das nicht weiter.

    Gruß

    Tefracky

    Code:
    @Override
    public void onStart() {
        super.onStart();
    
        swipeRefreshLayout.getViewTreeObserver().addOnScrollChangedListener(mOnScrollChangedListener=new ViewTreeObserver.OnScrollChangedListener(){
                    @Override
                    public void onScrollChanged() {
                        if (webView.getScrollY() == 0) {
                            System.out.println("Test: " + webView.getScrollY());
                        swipeRefreshLayout.setEnabled(true);
                        } else {
                            System.out.println("Test: " + webView.getScrollY());
                            swipeRefreshLayout.setEnabled(false);
                        }
                    }
                });
    }
    
    @Override
    public void onStop() {
        swipeRefreshLayout.getViewTreeObserver().removeOnScrollChangedListener(mOnScrollChangedListener);
        super.onStop();
    }
     
  2. tefracky, 05.03.2018 #2
    tefracky

    tefracky Threadstarter App-Anbieter (kostenlos)

  3. Seilbahn, 12.05.2018 #3
    Seilbahn

    Seilbahn Neuer Benutzer

    Wenn ich das jetzt richtig verstanden habe, möchtest du ein SwipeRefreshLayout benutzen, um dein WebView zu aktualisieren wenn man von oben nach unten swiped. Ich habe das damals so gelöst:
    Code:
            swipeRefreshLayout = (SwipeRefreshLayout) this.findViewById(R.id.YourSwipeRefreshLayout);
            //swipeRefreshLayout.setColorSchemeResources(R.color.YourColor);
            swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
                @Override
                public void onRefresh() {
                    YourWevView.reload();
                    swipeRefreshLayout.setRefreshing(true);
                }
            });
            swipeRefreshLayout.setRefreshing(true);
    
            YourWevView.getSettings().setJavaScriptEnabled(true);
            YourWevView.setWebViewClient(new WebViewClient() {
    
                @Override
                public void onPageFinished(WebView view, String url) {
                    super.onPageFinished(view, url);
                    swipeRefreshLayout.setRefreshing(false);
                }
    
                @Override
                public void onPageStarted(WebView view, String url, Bitmap favicon) {
                    swipeRefreshLayout.setRefreshing(true);
                    super.onPageStarted(view, url, favicon);
                }
            });
    Wichtig ist, dass du in der onPageFinished Methode
    Code:
    swipeRefreshLayout.setRefreshing(false);
    ausführst, da sich dein swipeRefreshLayout ansonsten weiterdreht.
    Wenn du willst kannst du, sobald eine neue URL aufgerufen wird in der onPageStarted Methode
    Code:
    swipeRefreshLayout.setRefreshing(true);
    ausführen, um das Layout als "ProgressBar" zu verwenden. Gestoppt wird es wieder, wenn die Seite fertig geladen wurde:
    Code:
    @Override
                public void onPageFinished(WebView view, String url) {
                    super.onPageFinished(view, url);
                    swipeRefreshLayout.setRefreshing(false);
                }
    Im Layout das WebView ins SwipeRefreshLayout packen:

    Code:
    <android.support.v4.widget.SwipeRefreshLayout
            android:id="@+id/YourSwipeRefreshLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
            <WebView
                android:id="@+id/YourwebView"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" />
    
        </android.support.v4.widget.SwipeRefreshLayout>
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
ListView: fehler android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0 Android App Entwicklung 11.01.2018
call function and return result Android App Entwicklung 14.11.2017
Du betrachtest das Thema "webView.getScrollY() returns always 0" im Forum "Android App Entwicklung",
  1. Android-Hilfe.de verwendet Cookies um Inhalte zu personalisieren und dir den bestmöglichen Service zu gewährleisten. Wenn du auf der Seite weitersurfst stimmst du der Cookie-Nutzung zu.  Ich stimme zu.