Agregar vistas debajo de la barra de herramientas en CoordinatorLayout

Tengo el siguiente diseño:

      

FrameLayout Fragment s en FrameLayout , reemplazándolos. Uno de mis Fragment es una lista, que tiene el siguiente diseño:

  

Mi problema aquí es que la barra de herramientas se dibuja sobre la lista . Traté de resolver eso al envolver el contenido de CoordinatorLayout en LinearLayout , que resolvió el sobregiro, pero de esa manera el comportamiento de desplazamiento de la LinearLayout ya no funciona.

¡Cualquier ayuda es muy apreciada!

Toma el atributo

 app:layout_behavior="@string/appbar_scrolling_view_behavior" 

de RecyclerView y póngalo en el FrameLayout que está tratando de mostrar en la Toolbar .

Descubrí que una cosa importante del comportamiento de la vista de desplazamiento es diseñar el componente debajo de la barra de herramientas. Debido a que FrameLayout tiene un descendiente que se desplazará ( RecyclerView ), CoordinatorLayout obtendrá esos eventos de desplazamiento para mover la Toolbar .


Otra cosa a tener en cuenta: ese comportamiento de disposición hará que la altura de FrameLayout tenga el tamaño como si la Toolbar ya estuviera desplazada , y con la Toolbar completamente desplegada, la vista completa simplemente se empuja hacia abajo para que la parte inferior de la vista quede debajo del parte inferior del CoordinatorLayout .

Esta fue una sorpresa para mi. Esperaba que la vista se cambiara de tamaño dinámicamente a medida que la barra de herramientas se desplaza hacia arriba y hacia abajo. Por lo tanto, si tiene un componente de desplazamiento con un componente fijo en la parte inferior de su vista, no verá ese componente inferior hasta que haya desplazado por completo la Toolbar .

Así que cuando quise anclar un botón en la parte inferior de la IU, trabajé alrededor de esto colocando el botón en la parte inferior de CoordinatorLayout ( android:layout_gravity="bottom" ) y agregando un margen inferior igual a la altura del botón a la ver debajo de la barra de herramientas.

Logré solucionar esto agregando:

android: layout_marginTop = “? android: attr / actionBarSize”

al FrameLayout como tal: