Hoja de fondo se aleja con cambio de visibilidad

Tengo una hoja inferior con un NestedScrollView dentro (ver abajo). Cuando presiono un botón FAB, quiero hacer que algunas partes de este NestedScrollView sean invisibles. Pero cuando cambio algunas visiones de linearlayouts a GONE, la hoja de fondo vuela aways de la tapa. Mira aquí:

Introduzca aquí la descripción de la imagen

Puede obtener el código completo en https://github.com/Tanrikut/BottomSheetExample

Mi método de visibilidad del cambio:

private void changeVisibility() { subtitleLayout.setVisibility(View.GONE); coordinateLayout.setVisibility(View.GONE); timeLayout.setVisibility(View.GONE); } 

Mi NestedScrollView xml:

 <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" app:behavior_peekHeight="120dp" app:layout_behavior="android.support.design.widget.BottomSheetBehavior" android:id="@+id/bottom_sheet_main"> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="28dp" android:background="@android:color/white" android:animateLayoutChanges="true" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:paddingLeft="10dp" android:paddingStart="10dp" android:paddingTop="@dimen/activity_horizontal_margin"> <TextView style="@style/TextAppearance.AppCompat.Headline" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Dandelion Chocolate" android:id="@+id/title" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="@dimen/activity_horizontal_margin" android:layout_marginTop="16dp" android:orientation="horizontal" android:id="@+id/subtitleLayout"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/subtitle" android:text="Subtitle" /> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="@dimen/activity_horizontal_margin" android:id="@+id/coordinateLayout"> <ImageButton android:layout_width="24dp" android:layout_height="24dp" android:alpha="0.36" android:src="@drawable/ic_room_24dp" android:background="@null" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/activity_horizontal_margin" android:layout_marginStart="@dimen/activity_horizontal_margin" android:text="740, Valencia St, San Francisco, CA" android:textColor="@android:color/primary_text_light" android:id="@+id/bottom_sheet_coordinate" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="@dimen/activity_horizontal_margin" android:id="@+id/timeLayout"> <ImageButton android:layout_width="24dp" android:layout_height="24dp" android:alpha="0.36" android:src="@drawable/ic_query_builder_24dp" android:background="@null" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/activity_horizontal_margin" android:layout_marginStart="@dimen/activity_horizontal_margin" android:text="Wed, 10 AM - 9 PM" android:textColor="@android:color/primary_text_light" android:id="@+id/bottom_sheet_time" /> </LinearLayout> </LinearLayout> </FrameLayout> </android.support.v4.widget.NestedScrollView> 

Me encontré con esto, tomó un tiempo para averiguar cuál era la causa.

Es porque estás usando android: animateLayoutChanges, que hace surgir un error en BottomSheetBehavior o CoordinatorLayout.

Eliminar y la hoja de fondo dejará de animar por sí solo cuando no debería. No es una solución, sino una solución al menos.

Actualizar:

Resulta que si habilitas "animateLayoutChanges" programáticamente configurando la instancia de LayoutTransition para usar, puedes establecer una bandera en ella que evitará que se ensucie con las vistas que son los antepasados ​​de la que estás usando android: animateLayoutChanges on (aka: Su contenedor BottomSheet):

 LayoutTransition transition = new LayoutTransition(); transition.setAnimateParentHierarchy(false); yourLinearLayoutThatNeedsLayoutAnimation.setLayoutTransition(transition); 

¡Puede ser esto puede ayudarle! No puedo comentarlo publicándolo como una respuesta

aquí

Para la disposición de la diapositiva algo igual que la hoja inferior pero bueno

BottomSheetBehavior tiene su propio comportamiento por el cual puede obtener el resultado respectivo. A continuación se muestra el comportamiento de la plantilla.

STATE_DRAGGING , STATE_SETTLING , STATE_EXPANDED , STATE_COLLAPSED , STATE_HIDDEN .

No utilice la visibilidad de ningún diseño.

Utilice este comportamiento en su código como:

 fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int behaviorState = bottomSheetBehavior.getState(); if (behaviorState == BottomSheetBehavior.STATE_EXPANDED) { bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); } else { bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); } } }); 
  • Pantalla débil e interacción de bloques con hojas de fondo
  • AS no puede encontrar BottomSheetBehavior_Params, _behavior_peekHeight y _behavior_hideable
  • Android: Problema de evento de toque de la hoja inferior anidado
  • Hoja de fondo de Android La altura de TextView no se ajusta al expandirse por primera vez
  • ¿Cómo puedo agregar una sombra a la vista inferior de la hoja?
  • BottomSheetBehaviour setstate sin animación
  • La elevación no funciona para BottomSheet dentro de la disposición del coordinador
  • Android Support BottomSheetBehavior no puede ser dinámico?
  • Android Support BottomSheetBehavior estado adicional anclado
  • Hoja de fondo con movimiento Botones de acción flotante
  • Trate de entender el comportamiento de BottomSheet en la biblioteca de soporte de Android 23.2.1
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.