En utilisant:
compile 'com.Android.support:design:23.0.0'
compile 'com.Android.support:appcompat-v7:23.0.0'
compile 'com.Android.support:cardview-v7:23.0.0'
compile 'com.Android.support:recyclerview-v7:23.0.0'
Avec le projet Cheesesquare mis à jour.
Dans le détail du fromage, je retire 2 cartes (pour n'en avoir qu'une). Existe-t-il un moyen d'empêcher la réduction de la barre d'outils qui affiche un espace vide?
Pour implémenter un tel comportement dans Cheesesquare exemple, il suffit de modifier le Android:layout_height
paramètre de NestedScrollView en wrap_content
.
Et pour empêcher le défilement de CollapsingToolbarLayout
, vous devez définir par programmation le paramètre layout_scrollFlags
sur la valeur AppBarLayout.LayoutParams.SCROLL_FLAG_SNAP
.
Ici décrit comment vous pouvez faire cela.
Vous pouvez utiliser le code ci-dessous pour cela:
public static void stopScroll() {
AppBarLayout.LayoutParams toolbarLayoutParams = (AppBarLayout.LayoutParams) collapsing_toolbar.getLayoutParams();
toolbarLayoutParams.setScrollFlags(0);
collapsing_toolbar.setLayoutParams(toolbarLayoutParams);
CoordinatorLayout.LayoutParams appBarLayoutParams = (CoordinatorLayout.LayoutParams) appbar.getLayoutParams();
appBarLayoutParams.setBehavior(null);
appbar.setLayoutParams(appBarLayoutParams);
}
public static void startScroll() {
AppBarLayout.LayoutParams toolbarLayoutParams = (AppBarLayout.LayoutParams) collapsing_toolbar.getLayoutParams();
toolbarLayoutParams.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);
collapsing_toolbar.setLayoutParams(toolbarLayoutParams);
CoordinatorLayout.LayoutParams appBarLayoutParams = (CoordinatorLayout.LayoutParams) appbar.getLayoutParams();
appBarLayoutParams.setBehavior(new AppBarLayout.Behavior());
appbar.setLayoutParams(appBarLayoutParams);
}
En XML, j'ai utilisé la propriété
app:layout_scrollFlags="snap"
dans <Android.support.design.widget.CollapsingToolbarLayout
et suivant dans l'activité
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
toolbar.setTitle(null);
toolbar.setCollapsible(false);
Il fonctionne maintenant.
Voici mon code de travail, pour d'abord effondrer la barre:
_appbar.setExpanded (false);
AppBarLayout _appbar = (AppBarLayout) findViewById(R.id.appbar);
_appbar.setExpanded(false);
voici la mise en page xml
<Android.support.design.widget.AppBarLayout
Android:id="@+id/appbar"
Android:layout_width="match_parent"
Android:layout_height="@dimen/detail_backdrop_height"
Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
Android:fitsSystemWindows="true">
<Android.support.design.widget.CollapsingToolbarLayout
Android:id="@+id/collapsing_toolbar"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
Android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginStart="48dp"
app:expandedTitleMarginEnd="64dp">
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:layout_collapseMode="pin" />
</Android.support.design.widget.CollapsingToolbarLayout>
</Android.support.design.widget.AppBarLayout>
la référence est: AppBarLayout.setExpanded (boolean)