2015-09-15 35 views
10

mam z tym problem:android - CoordinatorLayout/NestedScrollView/Hide-Pokaż pasek narzędzi/Problem z WebView

<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/coordinatorLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appBarLayout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|enterAlways" /> 
    </android.support.design.widget.AppBarLayout> 

    <android.support.v4.widget.NestedScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

     <WebView 
      android:id="@+id/webView" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 
    </android.support.v4.widget.NestedScrollView> 

</android.support.design.widget.CoordinatorLayout> 

Kiedy przewija I w WebView, pasek narzędzi jest ukryty lub pokazany (! Idealny), ale nie to problem z ładowaniem/pozycjonowaniem stron internetowych. Na przykład, jeśli przewijam do połowy strony i kliknę link, nowa strona, która zostanie załadowana, zostanie umieszczona mniej więcej pośrodku strony, a nie na górze. Jak gdyby paski przewijania nie przesuwały się z jednej strony na drugą.

jeśli dodać do NestedScrollView:

android:fillViewport="true" 

wszystko działa z Webview (strony obciążenia i pojawiają się dobrze chociaż zaczynając od góry), ale tracę Ukryj/Pokaż z paska narzędzi :(

Czy masz jakiś pomysł na temat tego problemu

z góry dziękuję za pomoc :)

(informacje: Android Biblioteki projektu Wsparcia : 23.0.1)

Yop

Odpowiedz

3

Moje założenie: Ponieważ jesteś oddanie WebView wewnątrz NestedScrollView przewijanie nie odbywa się na poziomie WebView więc po załadowaniu nowej strony z NestedScrollView pozostaje w ta sama pozycja.

Sugestia: stworzyć WebViewClient i zastąpić onPageStarted tutaj należy zmienić pozycję NestedScrollView przewijania 0:

nestedScrollView.scrollTo(0, 0); 
+1

Tak, dla mnie to działa do przewijania do góry, innym problemem jest to, kiedy skoki internecie zawartość z wysokiej wysokości internetowej do innego widoku, który jest małą treścią, ma długą białą spację przewiń do dołu. Czy możesz sugerować, aby to naprawić? Dzięki. – Jawaad

+1

@Jawaad ​​byłoby lepiej, gdyby otworzyć oddzielne pytanie dotyczące problemu, podać przykładowy kod i opisać, co już próbowałeś. Co do pytania: Chciałbym użyć przeglądarki Hierarchy Viewer, aby sprawdzić, czy problem nie dotyczy zmiany rozmiaru WebView lub NestedScrollView. Co można wypróbować jest w onPageFinished, aby wywołać unieważnienie w NestedScrollView, nie wiem, czy to rozwiąże problem. – Raanan