volver una rápido rapido puede poner instalar iconos herramientas google eliminar dela cómo como chrome celular barra arcmap agregar acceso android scroll toolbar appbar

android - una - ¿Cómo hacer que la barra de herramientas aparezca o desaparezca al usar Google Design Library?



google toolbar chrome (3)

Estoy tratando de lograr un efecto como el de WhatsApp, donde la barra de herramientas (cuando se desplaza) se recortará para verse como un imán, o fuera de vista como un imán.

Lo que tengo en mi XML de MainActivity:

  • DrawerLayout - Diseño base
  • CoordinatorLayout - Diseño para la barra de aplicaciones y la barra de herramientas y pestañas
  • AppBarLayout: para mantener presionada la barra de herramientas y las pestañas
  • Barra de herramientas - tiene ESTA bandera: app:layout_scrollFlags="scroll|enterAlways"
  • SlidingTabLayout: muestra pestañas
  • ViewPager: para pestañas
  • RecyclerView - Para coordinatorlayout

Ahora no me malinterprete, funciona, cuando me desplazo hacia abajo, la barra de herramientas se aleja de la vista, pero digo que dejo de desplazarme hasta la mitad, luego la barra de herramientas se queda allí medio escondida fuera de la vista y la otra mitad a la vista.

¿Cómo puedo abordar la solución de este problema, ya que quiero que desaparezca de la vista o se vea?


Acabo de ocultar el diseño de la barra de acciones en la actividad principal y establecí el lapso para CollapsingToolbarLayout. esto funciona para mi.

en la actividad principal

setSupportActionBar(mToolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().hide(); CollapsingToolbarLayout collapsingToolbar = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar); collapsingToolbar.setTitle("Name"); loadBackdrop();

y layout_activity_main

<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|snap" android:fitsSystemWindows="true" app:contentScrim="?attr/colorPrimary" app:expandedTitleMarginStart="48dp" app:expandedTitleMarginEnd="64dp"> <ImageView android:id="@+id/backdrop" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" android:fitsSystemWindows="true" app:layout_collapseMode="parallax" /> <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>


Esta característica se ha agregado en la versión 23.1.0 de la biblioteca de soporte de Android. Desde notas de la versión:

Se agregó soporte de ajuste de bordes a la clase AppBarLayout al agregar la constante SCROLL_FLAG_SNAP. Cuando el desplazamiento finaliza, si la vista solo se ve parcialmente, la vista se ajusta y se desplaza al borde más cercano.

<android.support.design.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_scrollFlags="scroll|enterAlways|snap" /> ----- -----

Para más información: http://android-developers.blogspot.in/2015/10/android-support-library-231.html

EDITAR: Se agregó una comilla final a layout_scrollFlags para hacer esto sintácticamente correcto


EDITAR: a partir del soporte 23.1.0 esto ya no es necesario. Ver esta respuesta en su lugar.

Una forma posible de resolver esto es personalizar el conjunto de Behavior en su AppBarLayout .

<android.support.design.widget.AppBarLayout app:layout_behavior="com.myapp.AppBarLayoutSnapBehavior" android:layout_width="match_parent" android:layout_height="wrap_content"> ...

Su AppBarLayoutSnapBehavior cambiaría el comportamiento predeterminado de AppBarLayout.Behavior , al agregar la lógica de complemento cuando se detiene el desplazamiento. Con suerte, el siguiente código se explica por sí mismo.

package com.myapp; public class AppBarLayoutSnapBehavior extends AppBarLayout.Behavior { private ValueAnimator mAnimator; private boolean mNestedScrollStarted = false; public AppBarLayoutSnapBehavior(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, AppBarLayout child, View directTargetChild, View target, int nestedScrollAxes) { mNestedScrollStarted = super.onStartNestedScroll(coordinatorLayout, child, directTargetChild, target, nestedScrollAxes); if (mNestedScrollStarted && mAnimator != null) { mAnimator.cancel(); } return mNestedScrollStarted; } @Override public void onStopNestedScroll(CoordinatorLayout coordinatorLayout, AppBarLayout child, View target) { super.onStopNestedScroll(coordinatorLayout, child, target); if (!mNestedScrollStarted) { return; } mNestedScrollStarted = false; int scrollRange = child.getTotalScrollRange(); int topOffset = getTopAndBottomOffset(); if (topOffset <= -scrollRange || topOffset >= 0) { // Already fully visible or fully invisible return; } if (topOffset < -(scrollRange / 2f)) { // Snap up (to fully invisible) animateOffsetTo(-scrollRange); } else { // Snap down (to fully visible) animateOffsetTo(0); } } private void animateOffsetTo(int offset) { if (mAnimator == null) { mAnimator = new ValueAnimator(); mAnimator.setInterpolator(new DecelerateInterpolator()); mAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { setTopAndBottomOffset((int) animation.getAnimatedValue()); } }); } else { mAnimator.cancel(); } mAnimator.setIntValues(getTopAndBottomOffset(), offset); mAnimator.start(); } }

Lo único es que la vista de desplazamiento (en mi caso, un RecyclerView ) se ajusta junto con la Toolbar . De hecho, me gusta de esta manera, pero no estoy seguro de que sea eso lo que quieres.