Hacer AppBarLayout responder a desplazamiento en WebView

En la biblioteca de soporte de diseño (desde I / O), Google presentó el AppBarLayout. Estoy tratando de hacer que la barra de herramientas de animar fuera de la pantalla cuando el usuario se desplaza a través de un sitio web en un WebView en un fragmento. Funciona cuando pongo mi elemento WebView dentro de un NestedScrollView, pero eso hace que se desplace a través del buggy de WebView y haga imposible pellizcar a zoom. ¿Cómo puedo hacer que el AppBarLayout responda (animar lejos cuando se desplaza hacia abajo, volver al desplazarse hacia arriba, al igual que en NestedScrollView) a la WebView? Estos son mis archivos XML: El diseño principal:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" android:id="@+id/main_coordinatorlayout"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" android:id="@+id/appBarLayout"> <android.support.v7.widget.Toolbar android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:id="@+id/toolbar" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/Theme.AppCompat.Light" app:layout_scrollFlags="scroll|enterAlways"/> <android.support.design.widget.TabLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tabLayout"/> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/viewPager" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_anchor="@id/viewPager" app:layout_anchorGravity="bottom|right|end" app:borderWidth="0dp" android:layout_margin="16dp" android:src="@drawable/ic_action_autorenew" /> 

El código de mi fragmento que contiene la webview:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <WebView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/webView" android:layout_gravity="center_horizontal" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

¡Gracias por adelantado!

Gracias a @ torque203 por proporcionar esta respuesta. Estoy repostando esto para reunir más atención.

Puede ampliar la visualización web e implementar NestedScrollingChild. Por ejemplo, puede utilizar el objeto NestedWebView que se encuentra en este proyecto Github .

A partir de ahí, puede actuar como si fuera una Vista normal que admita Desplazamiento anidado, como RecyclerView:

 <your.package.name.NestedWebView android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

En mi caso de uso, esto funcionó bien.

Una vez más, los créditos a @ torque203 para encontrar este proyecto Github.

Las cosas colocadas dentro de CoordinatorLayout deben ser diseñadas e implementadas para trabajar con él o no se coordinará con ninguna otra vista de hermano. Pero bueno … La barra de herramientas no está diseñada para eso. AppBarLayout es sólo un componente que está preparado para que Toolbar funcione perfectamente con CoordinatorLayout.

LinearLayout no está diseñado para trabajar con CoordinatorLayout.It es más fácil, sólo tiene que agregar un atributo a la LinearLayout diciendo su comportamiento de desplazamiento

 <LinearLayout ... app:layout_behavior="@string/appbar_scrolling_view_behavior" ... > 

Puede intentar que AppBarLayout responda al WebView por este

 app:layout_behavior="@string/appbar_scrolling_view_behavior" 

Ya que ScrollView es ahora un hijo directo de CoordinatorLayout.

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

ScrollView no fue diseñado para trabajar con CoordinatorLayout (de nuevo). Necesita usar el otro, NestedScrollView, proporcionado en Android Support Library v4, que está diseñado para trabajar con CoordinatorLayout desde que nació.

Y con la misma razón, tenga en cuenta que el ListView clásico no funciona con CoordinatorLayout también. Sólo funciona RecyclerView.

  • Android: ¿cómo usar los colores del tema actual en un xml extraíble?
  • Cambiar el ancho de AutoCompleteTextView en Android
  • Solución automática de laberinto
  • Error desconocido en xpath (utilizando xmlpullparser)
  • Cómo recuperar el valor de un atributo que contiene dos puntos en el nombre del atributo utilizando xpath
  • Ejemplo de programa para android Parche relajante usando xml API
  • Cómo configurar OnClickListener (Android)
  • Android: Cómo crear CursorAdapter desde los datos en un archivo XML
  • Escribir XML en Android
  • Convertir PSD a Android XML (formato) Formato?
  • Cómo agregar sombra alrededor de imagen circular
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.