2015-09-22 2 views
6

J'ai déjà réalisé la suppression de layout_scrollFlags dans mon CollapsingToolbarLayout. mais j'ai besoin de supprimer le layout_behavior de mon NestedScrollView de sorte que quand il n'y a aucun contenu sur mon affichage de défilement imbriqué, la réduction de la barre d'outils sera également désactivée. Retirer le layout_behavior de mon NestedScrollView est très facile, juste je supprime littéralement la ligne de code dans votre xml mais comment puis-je l'enlever par programmation?Comment faire pour supprimer par programme un comportement de disposition de mon NestedScrollView?

mon xml:

<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.design.widget.AppBarLayout 
       android:id="@+id/appbar" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:fitsSystemWindows="true" 
       android:background="@android:color/white"> 

       <android.support.design.widget.CollapsingToolbarLayout 
        android:id="@+id/collapsing_toolbar" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:fitsSystemWindows="true" 
        app:contentScrim="?attr/colorPrimary" 
        app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

        <fragment 
         android:id="@+id/pawfile_header" 
         android:name="com.lightbulb.pawesome.fragments.PawfileHeaderFragment" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:layout_marginLeft="10dp" 
         android:layout_marginTop="10dp" 
         android:fitsSystemWindows="true" 
         app:layout_collapseMode="parallax" /> 

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

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

      <fragment 
       android:id="@+id/pawfile_timeline" 
       android:name="com.lightbulb.pawesome.user_timeline.PawesomeUserTimelineFragment" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

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

Vous pouvez utiliser la visibilité de mise en page GONE. –

+0

Je suis désolé, mais la barre d'outils Collpasing a un enfant. donc si je vais mettre sa visibilité à parti, la vue à l'intérieur de la barre d'outils de collapsus sera allée aussi –

+0

@ android_softy veuillez voir ma question mise à jour –

Répondre

1

Vous pouvez supprimer le programme comportement de mise en page de votre NestedScrollView en mettant à zéro dans ses LayoutParams, qui devrait être de type CoordinatorLayout.LayoutParams:

CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) myNestedScrollView.getLayoutParams(); 
params.setBehavior(null); 
+0

Cela ne veut pas semble fonctionner pour moi. J'ai même essayé de redéfinir le layoutParams après avoir appelé setBehavior (null). – Allison

10

Essayez supprimer le "appbar_scrolling_view_behavior" du fragment et effacer les drapeaux de défilement de la barre d'outils CollapsingLayout

CoordinatorLayout.LayoutParams coordinatorLayoutParams = (CoordinatorLayout.LayoutParams) pawfileTimeline.getLayoutParams(); 
coordinatorLayoutParams.setBehavior(null); 

AppBarLayout.LayoutParams toolbarLayoutParams = (AppBarLayout.LayoutParams) toolbar.getLayoutParams(); 
toolbarLayoutParams.setScrollFlags(0); 
+0

Définir les indicateurs de défilement à 0 était ce qui a fonctionné pour moi. Supprimer le comportement CoordinatorLayout ferait disparaître ma barre d'outils. –