14

Sto lavorando a un'applicazione in cui sto utilizzando AppBarLayout con CollapsingToolbarLayout e NestedScrollView. Ho implementato con successo questo e sta funzionando bene.Scorrimento uniforme e Fling con NestedScrollView, AppBarLayout e CoordinatorLayout

Ora, quello che sto cercando di fare è che su Fling (scorrimento rapido verso l'alto) su Nestedscrollview dovrebbe scorrere completamente verso l'alto. Allo stesso modo, durante l'esecuzione (scorrimento rapido verso il basso) verso la parte inferiore dello schermo, è necessario scorrere fino in fondo senza problemi. Tuttavia ora, rimane bloccato solo tra il che lo rende brutto. Ho provato molte soluzioni disponibili disponibili qui ma non ha funzionato per me. La mia configurazione attuale è sotto.

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:card_view="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
xmlns:zhy="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:ignore="RtlHardcoded"> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/main.appbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/main.collapsing" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

     <ImageView 
      android:id="@+id/placeholder" 
      android:layout_width="match_parent" 
      android:layout_height="246dp" 
      android:scaleType="fitXY" 
      android:tint="#11000000" 
      app:layout_collapseMode="parallax" 
      app:layout_collapseParallaxMultiplier="0.9" /> 


     <FrameLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity="top" 
      android:padding="10dp"> 


      <FrameLayout 
       android:id="@+id/back_frame" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="left|center_vertical" 
       android:paddingBottom="5dp" 
       android:paddingLeft="5dp" 
       android:paddingRight="10dp" 
       android:paddingTop="5dp"> 

       <ImageView 
        android:id="@+id/back_image" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center" 
        android:src="@drawable/abc_ic_ab_back_mtrl_am_alpha" /> 
      </FrameLayout> 


      <FrameLayout 
       android:id="@+id/frameLayoutheart" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 

       android:layout_gravity="right|center_vertical" 
       android:paddingBottom="5dp" 
       android:paddingLeft="10dp" 
       android:paddingRight="5dp" 
       android:paddingTop="5dp"> 

       <ImageView 
        android:id="@+id/favbtnicon" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center" 
        android:src="@drawable/heart_profile" /> 
      </FrameLayout> 


     </FrameLayout> 

     <FrameLayout 
      android:id="@+id/main.framelayout.title" 
      android:layout_width="match_parent" 
      android:layout_height="100dp" 
      android:layout_gravity="bottom|center_horizontal" 
      android:orientation="vertical" 

      app:layout_collapseMode="parallax" 
      app:layout_collapseParallaxMultiplier="0.3"> 

      <LinearLayout 
       android:id="@+id/main.linearlayout.title" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:gravity="top" 
       android:orientation="vertical"> 


       <LinearLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center_horizontal" 

        android:orientation="horizontal"> 

        <TextView 
         android:id="@+id/profileName" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_marginTop="25dp" 
         android:inputType="textNoSuggestions" 
         android:singleLine="true" 
         android:text="Ankita arora" 
         android:textColor="@android:color/white" 
         android:textSize="25sp" 
         android:textStyle="bold" /> 


        <ImageView 
         android:id="@+id/onlinestatus" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_marginTop="29dp" 
         android:src="@drawable/online" 
         android:visibility="visible" /> 
       </LinearLayout> 


       <LinearLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center_horizontal" 
        android:orientation="horizontal"> 

        <TextView 
         android:id="@+id/age" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_gravity="center_horizontal" 
         android:inputType="textCapSentences" 
         android:text="asdas" 
         android:textColor="@android:color/white" 
         android:textSize="13sp" /> 


        <TextView 
         android:layout_width="4dp" 
         android:layout_height="4dp" 
         android:layout_gravity="center" 

         android:layout_marginLeft="4dp" 
         android:layout_marginRight="4dp" 
         android:background="@drawable/white_dot" /> 

        <TextView 
         android:id="@+id/sex" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_gravity="center_horizontal" 
         android:inputType="textCapSentences" 
         android:text="asdas" 
         android:textColor="@android:color/white" 
         android:textSize="13sp" /> 


        <TextView 
         android:id="@+id/loc_point" 
         android:layout_width="4dp" 
         android:layout_height="4dp" 
         android:layout_gravity="center" 

         android:layout_marginLeft="4dp" 
         android:layout_marginRight="4dp" 
         android:background="@drawable/white_dot" /> 


        <TextView 
         android:id="@+id/loc" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_gravity="center_horizontal" 
         android:inputType="textCapSentences" 
         android:text="asdas" 
         android:textColor="@android:color/white" 
         android:textSize="13sp" /> 

       </LinearLayout> 


      </LinearLayout> 
     </FrameLayout> 
    </android.support.design.widget.CollapsingToolbarLayout> 
</android.support.design.widget.AppBarLayout> 


<android.support.v4.widget.NestedScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:scrollbars="none" 
    app:behavior_overlapTop="10dp" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 

    > 

    ------content-------------- 


    </android.support.v4.widget.NestedScrollView> 


<android.support.v7.widget.Toolbar 
    android:id="@+id/main.toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:background="@color/pinkColor" 
    android:visibility="invisible" 
    app:contentInsetEnd="0dp" 
    app:contentInsetStart="0dp" 
    app:layout_anchor="@id/main.framelayout.title" 
    app:theme="@style/ThemeOverlay.AppCompat.Dark" 
    app:title=""> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:orientation="horizontal"> 

     <ImageView 
      android:id="@+id/back" 
      android:layout_width="25dp" 
      android:layout_height="25dp" 
      android:layout_gravity="left|center_vertical" 
      android:layout_marginLeft="4dp" 
      android:src="@drawable/abc_ic_ab_back_mtrl_am_alpha" 
      android:visibility="invisible" /> 

     <Space 
      android:layout_width="@dimen/image_final_width" 
      android:layout_height="@dimen/image_final_width" /> 


     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_marginLeft="8dp" 
      android:gravity="center" 
      android:orientation="vertical"> 

      <TextView 
       android:id="@+id/main.textview.title" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 

       android:layout_gravity="left" 
       android:text="@string/quila_name2" 
       android:textColor="@android:color/white" 
       android:textSize="20sp" /> 

      <TextView 
       android:id="@+id/status" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="left" 
       android:layout_marginTop="-4dp" 
       android:text="@string/quila_name2" 
       android:textColor="@android:color/white" 
       android:textSize="12sp" /> 


     </LinearLayout> 

    </LinearLayout> 
</android.support.v7.widget.Toolbar> 

<de.hdodenhof.circleimageview.CircleImageView 
    android:id="@+id/profileimg" 
    android:layout_width="@dimen/image_width" 
    android:layout_height="@dimen/image_width" 
    android:layout_gravity="center_horizontal" 

    app:border_color="@android:color/white" 
    app:border_width="2dp" 
    app:finalHeight="@dimen/image_final_width" 
    app:finalYPosition="2dp" 
    app:layout_behavior="com.sdl.apps.yaarri.views.AvatarImageBehavior" 
    app:startHeight="2dp" 
    app:startToolbarPosition="2dp" 
    app:startXPosition="2dp" /> 

Una delle risposte più accettati, mostrata di seguito non ha funzionato per me.

Unable to scroll AppBarLayout and collapsing toolbar with NestedScrollView smoothly

+0

si può spiegare la vostra esigenza in dettaglio ?? hai detto 'Nestedscrollview dovrebbe scorrere completamente verso l'alto e lo stesso dovrebbe funzionare verso il basso senza problemi ma rimane bloccato in mezzo 'ma cosa si blocca ?? è il tuo 'toolbar' oi suoi contenuti dentro' nestedScrollView'? – himanshu1496

+0

Nessuna barra degli strumenti non è all'interno di nestedScrollView.There sono viste normali che sono al suo interno. Quando offro un'avventura a Nestedscrollview, dovrebbe scorrere completamente verso l'alto e Appbarlayout dovrebbe completamente crollare, ma qui rimane bloccato tra .dat significa che non scorre completamente verso l'alto. –

+0

Ho usato [questo] (https://stackoverflow.com/a/39415170/4510961) e funziona perfettamente e non è necessaria alcuna libreria esterna;) –

risposta

10

Quando stavo bruciando il mio olio di mezzanotte questa biblioteca è venuto come Batman

https://github.com/henrytao-me/smooth-app-bar-layout

secondo la quale il comportamento può essere migliorata seguendo questi passaggi:

1.Change

android.support.design.widget.AppBarLayout 

a

me.henrytao.smoothappbarlayout.SmoothAppBarLayout and set android:id 

2.Remove

app:layout_behavior="@string/appbar_scrolling_view_behavior" 

3.Aggiungere di intestazione al NestedScrollView o RecyclerView

che in realtà ha fatto di lavorare come fascino.

La configurazione finale si presenta come

   <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.support.v4.widget.NestedScrollView 
        android:id="@+id/nested_scroll_view" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent"> 

        <LinearLayout 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:orientation="vertical" 
         android:paddingLeft="16dp" 
         android:paddingRight="16dp" 
         android:paddingTop="@dimen/app_bar_height"> 

         <TextView 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:layout_marginBottom="16dp" 
         android:layout_marginTop="16dp" 
         android:text="@string/text_short" /> 

         <TextView 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:layout_marginBottom="16dp" 
         android:text="@string/text_long" /> 
        </LinearLayout> 
        </android.support.v4.widget.NestedScrollView> 

        <me.henrytao.smoothappbarlayout.SmoothAppBarLayout 
        android:id="@+id/smooth_app_bar_layout" 
        android:layout_width="match_parent" 
        android:layout_height="@dimen/app_bar_height"> 

        <android.support.design.widget.CollapsingToolbarLayout 
         android:id="@+id/collapsing_toolbar_layout" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" 
         app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

         <android.support.v7.widget.Toolbar 
         android:id="@+id/toolbar" 
         app:layout_collapseMode="pin" 
         app:navigationIcon="@drawable/ic_menu_arrow_back" 
         style="@style/AppStyle.MdToolbar" /> 
        </android.support.design.widget.CollapsingToolbarLayout> 
        </me.henrytao.smoothappbarlayout.SmoothAppBarLayout> 
       </android.support.design.widget.CoordinatorLayout> 

Se ancora affrontare qualsiasi problema, mentre l'attuazione del presente chiedere qui mi piacerebbe aiutare e marcare questo in su se questa risposta aiuta.

+0

Ho provato la soluzione, ma quando rimuovo il layout_behavior, l'AppBar scompare .. . Sai perché? –

+0

Non dovresti rimuoverlo. Indica la vista come comportarsi sullo scroll .. –

+1

Ma cosa intendi nel tuo passo 2? Hai detto di rimuovere il layout_behavior –

Problemi correlati