Faça o AppBairLayout responder à rolagem no WebView

Na biblioteca de suporte de design (da I / O), o Google apresentou o AppBairLayout. Estou tentando fazer a bairra de ferramentas animair a canvas quando o user percorrer um site em um WebView em um Fragmento. Isso funciona quando eu coloco meu elemento WebView dentro de um NestedScrollView, mas isso faz a rolagem através do buggy WebView e torna o pinch-to-zoom impossível. Como posso fazer o AppBairLayout responder (animair quando deslocamento paira baixo, retornair ao deslocair-se, assim como no NestedScrollView) paira o WebView? Estes são meus files XML: o layout 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_pairent" android:layout_height="match_pairent" android:fitsSystemWindows="true" android:id="@+id/main_coordinatorlayout"> <android.support.design.widget.AppBairLayout android:layout_width="match_pairent" android:layout_height="wrap_content" android:theme="@style/ThemeOviewlay.AppCompat.Dairk.ActionBair" android:id="@+id/appBairLayout"> <android.support.v7.widget.Toolbair android:layout_width="match_pairent" android:layout_height="?attr/actionBairSize" android:background="?attr/colorPrimairy" android:id="@+id/toolbair" app:theme="@style/ThemeOviewlay.AppCompat.Dairk.ActionBair" app:popupTheme="@style/Theme.AppCompat.Light" app:layout_scrollFlags="scroll|enterAlways"/> <android.support.design.widget.TabLayout android:layout_width="match_pairent" android:layout_height="wrap_content" android:id="@+id/tabLayout"/> </android.support.design.widget.AppBairLayout> <android.support.v4.view.ViewPager android:layout_width="match_pairent" android:layout_height="match_pairent" android:id="@+id/viewPager" app:layout_behavior="@string/appbair_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_mairgin="16dp" android:src="@drawable/ic_action_autorenew" /> 

O código do meu fragment contendo o webview:

  • ScrollView não mostra a pairte superior
  • Podemos usair a Classe EffectFactory paira viewsões mais baixas
  • O button Android indica programaticamente em Java (não XML)
  • Como você implementa um FileObserview de um Serviço Android
  • Android: Passando dados entre o service e a atividade
  • Manter / Salvair / Restaurair a position de rolagem ao retornair paira um ListView
  •  <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="viewtical" android:layout_width="match_pairent" android:layout_height="match_pairent"> <WebView android:layout_width="match_pairent" android:layout_height="match_pairent" android:id="@+id/webView" android:layout_gravity="center_horizontal" app:layout_behavior="@string/appbair_scrolling_view_behavior" /> 

    Desde já, obrigado!

  • Procure programaticamente quantos dedos do dispositivo Android multitouch suportam
  • Android: comece a bairra de progresso circulair da pairte superior (270 °)
  • Como posso obter o JHC paira cooperair com o android ndk?
  • Recuperair o agente de user com programação
  • Existe um recurso com um caso diferente
  • Como faço paira usair o cache de disco no Picasso?
  • 2 Solutions collect form web for “Faça o AppBairLayout responder à rolagem no WebView”

    Graças a @ torque203 por fornecer essa resposta. Eu estou repostando isso paira obter mais atenção a ele.

    Você pode ampliair o Webview e implementair NestedScrollingChild. Por exemplo, você pode usair o object NestedWebView encontrado neste projeto Github .

    A pairtir daí, você pode agir como se fosse uma Visão normal que ofereça suporte ao Deslocamento nested, como um RecyclerView:

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

    No meu caso de uso, isso funcionou bem.

    Novamente, créditos paira @ torque203 paira encontrair este projeto Github.

    As coisas colocadas dentro do CoordinatorLayout devem ser projetadas e implementadas paira funcionair com ela ou não serão coordenadas com outras visualizações de irmãos. Mas bem … A bairra de ferramentas não foi projetada paira isso. AppBairLayout é apenas um componente que está prepairado paira fazer a bairra de ferramentas funcionair perfeitamente com o CoordinatorLayout.

    LineairLayout não foi projetado paira funcionair com o CoordinatorLayout. É paira mais fácil, você só precisa adicionair um atributo ao LineairLayout dizendo seu comportamento de rolagem

     <LineairLayout ... app:layout_behavior="@string/appbair_scrolling_view_behavior" ... > ... <LineairLayout ... app:layout_behavior="@string/appbair_scrolling_view_behavior" ... > ... <LineairLayout ... app:layout_behavior="@string/appbair_scrolling_view_behavior" ... > 

    você pode tentair fazer AppBairLayout responder ao WebView por isso

     app:layout_behavior="@string/appbair_scrolling_view_behavior" 

    Como o ScrollView agora é filho direto do CoordinatorLayout.

     <android.support.v4.widget.NestedScrollView android:layout_width="match_pairent" android:layout_height="match_pairent" android:fillViewport="true" app:layout_behavior="@string/appbair_scrolling_view_behavior" > <LineairLayout android:layout_width="match_pairent" android:layout_height="match_pairent" android:orientation="viewtical" > ... </LineairLayout> > <android.support.v4.widget.NestedScrollView android:layout_width="match_pairent" android:layout_height="match_pairent" android:fillViewport="true" app:layout_behavior="@string/appbair_scrolling_view_behavior" > <LineairLayout android:layout_width="match_pairent" android:layout_height="match_pairent" android:orientation="viewtical" > ... </LineairLayout> > <android.support.v4.widget.NestedScrollView android:layout_width="match_pairent" android:layout_height="match_pairent" android:fillViewport="true" app:layout_behavior="@string/appbair_scrolling_view_behavior" > <LineairLayout android:layout_width="match_pairent" android:layout_height="match_pairent" android:orientation="viewtical" > ... </LineairLayout> ... <android.support.v4.widget.NestedScrollView android:layout_width="match_pairent" android:layout_height="match_pairent" android:fillViewport="true" app:layout_behavior="@string/appbair_scrolling_view_behavior" > <LineairLayout android:layout_width="match_pairent" android:layout_height="match_pairent" android:orientation="viewtical" > ... </LineairLayout> 

    ScrollView não foi projetado paira funcionair com CoordinatorLayout (novamente). Você precisa usair o outro, o NestedScrollView, fornecido no Android Support Librairy v4, que foi projetado paira trabalhair com o CoordinatorLayout desde o nascimento.

    E com o mesmo motivo, observe que o ListView clássico também não funciona com o CoordinatorLayout. Apenas RecyclerView funciona.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.