with scrollflags layout_collapsemode example coordinatorlayout collapsing appbarlayout android android-support-library android-toolbar android-collapsingtoolbarlayout

android - scrollflags - Prevenga el colapso de la barra de herramientas y el colapso si no es necesario



layout_collapsemode (4)

Utilizando:

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''

Con el proyecto Cheesesquare actualizado.

En el detalle del queso, quito 2 cartas (para tener solo una). ¿Hay alguna forma de evitar que la barra de herramientas se derrumbe y muestre un espacio en blanco?


Aquí está mi código de trabajo, para inicialmente collapes la barra:

_appbar.setExpanded (false);

AppBarLayout _appbar = (AppBarLayout) findViewById(R.id.appbar); _appbar.setExpanded(false);

Aquí está el diseño 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 referencia es: AppBarLayout.setExpanded(boolean)


En xml he utilizado la propiedad.

app:layout_scrollFlags="snap" en <android.support.design.widget.CollapsingToolbarLayout

y siguiendo en la actividad.

toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); toolbar.setTitle(null); toolbar.setCollapsible(false);

Está trabajando ahora.


Para implementar tal comportamiento en Cheesesquare ejemplo simplemente modifica android:layout_height param de NestedScrollView a wrap_content . Evitará el desplazamiento por contenido si es lo suficientemente pequeño como para caber en la pantalla.

Y para evitar el desplazamiento mediante CollapsingToolbarLayout , debe establecer layout_scrollFlags programación el parámetro layout_scrollFlags en el valor AppBarLayout.LayoutParams.SCROLL_FLAG_SNAP .

Here describimos cómo puedes hacer esto.


Puedes usar el siguiente código para esto:

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); }