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