El contenido del fragment está oculto detrás de BottomNavigationView cuando se desplaza

He investigado bastante sobre esto y no sé qué hacer. Tengo un contenido en un fragment que está siendo recortado por la barra de navigation inferior en la actividad y no estoy seguro de qué hacer. Intenté agregar la app:layout_behavior="@string/appbar_scrolling_view_behavior" al NestedScrollView, pero la parte inferior del contenido (los nombres de las ubicaciones) aún se está cortando; probablemente haya una solución fácil para esto, pero no puedo descárgalo. El XML para mi actividad principal y el fragment "de inicio" es el siguiente:

activity_home.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/home_screen" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <include layout="@layout/app_bar" /> <FrameLayout android:id="@+id/fragment_container" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"/> <android.support.design.widget.BottomNavigationView android:id="@+id/bottom_nav" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="start" android:background="@color/navbarBackground" app:menu="@menu/bottom_nav_menu" /> </LinearLayout> 

home_fragment.xml

 <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout 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:id="@+id/home_fragment" android:layout_width="match_parent" android:layout_height="match_parent" tools:layout_editor_absoluteX="0dp" tools:layout_editor_absoluteY="0dp"> <ImageView android:id="@+id/tokyo_placeholder" android:layout_width="wrap_content" android:layout_height="wrap_content" android:adjustViewBounds="true" android:scaleType="fitStart" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:srcCompat="@drawable/main_screen_placeholder" /> <ImageView android:id="@+id/airplane_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/circle_background" app:layout_constraintBottom_toBottomOf="@+id/tokyo_placeholder" app:layout_constraintLeft_toLeftOf="@+id/tokyo_placeholder" app:layout_constraintRight_toRightOf="@+id/tokyo_placeholder" app:layout_constraintTop_toTopOf="@+id/tokyo_placeholder" app:srcCompat="@drawable/icons8_airplane_48" tools:layout_constraintBottom_creator="1" tools:layout_constraintLeft_creator="1" tools:layout_constraintRight_creator="1" tools:layout_constraintTop_creator="1" /> <android.support.v4.widget.NestedScrollView android:id="@+id/scroll_view" android:layout_width="0dp" android:layout_height="286dp" android:layout_marginBottom="@dimen/app_bar_height" android:layout_marginStart="5dp" android:layout_marginTop="5dp" android:fillViewport="true" app:layout_constraintBottom_toTopOf="@id/bottom_nav" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/tokyo_placeholder" tools:layout_constraintLeft_creator="1" tools:layout_constraintRight_creator="1"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <TextView android:id="@+id/destination_headline" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/featunetworking_destinations_headline" android:textAllCaps="true" android:textAppearance="@style/TextAppearance.AppCompat.Headline" android:textSize="14sp" android:textStyle="bold" /> <android.support.v7.widget.RecyclerView android:id="@+id/featunetworking_destinations_recycler_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/destination_headline" /> <TextView android:id="@+id/saved_trips_headline" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/featunetworking_destinations_recycler_view" android:fontFamily="sans-serif" android:text="@string/saved_trips" android:textAllCaps="true" android:textAppearance="@style/TextAppearance.AppCompat.Headline" android:textSize="14sp" android:textStyle="bold" /> <android.support.v7.widget.RecyclerView android:id="@+id/saved_trips_recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@id/saved_trips_headline" /> </RelativeLayout> </android.support.v4.widget.NestedScrollView> </android.support.constraint.ConstraintLayout> 

app_bar.xml

 <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/app_bar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:elevation="4dp" android:background="#fff" android:theme="@style/ThemeOverlay.AppCompat.ActionBar" android:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> 

Como un ejemplo para mostrar lo que quiero decir, aquí está el contenido cuando la barra de navigation se quita del path y aquí está el contenido con la barra en el path . Estoy pensando que el problema es algún tipo de problema de margen / relleno, pero no puedo entender qué arreglar.

Editar: he creado un repository con el código relevante (y un ejemplo de emulador viable) aquí . Tenga en count que el código está escrito en Kotlin, pero no creo que el problema resida en ninguno de los códigos, sino más. dentro del layout

Solutions Collecting From Web of "El contenido del fragment está oculto detrás de BottomNavigationView cuando se desplaza"

No estoy seguro de cuál es el comportamiento esperado, no puedo entender eso solo leyendo su pregunta. Después de aplicar este parche , que solo incluye los cambios de layout home_fragment.xml :

 <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout 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:id="@+id/home_fragment" android:layout_width="match_parent" android:layout_height="match_parent" tools:layout_editor_absoluteX="0dp" tools:layout_editor_absoluteY="0dp"> <FrameLayout android:id="@+id/header_container" android:layout_width="0dp" android:layout_height="wrap_content" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent"> <ImageView android:id="@+id/tokyo_placeholder" android:layout_width="wrap_content" android:layout_height="wrap_content" android:adjustViewBounds="true" android:scaleType="fitStart" app:srcCompat="@drawable/main_screen_placeholder" tools:ignore="ContentDescription" /> <ImageView android:id="@+id/airplane_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal|center_vertical" android:background="@drawable/circle_background" app:srcCompat="@drawable/icons8_airplane_48" tools:ignore="ContentDescription" /> </FrameLayout> <android.support.v4.widget.NestedScrollView android:id="@+id/scroll_view" android:layout_width="0dp" android:layout_height="0dp" android:fillViewport="true" android:paddingLeft="5dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/header_container"> <android.support.constraint.ConstraintLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <TextView android:id="@+id/destination_headline" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/featunetworking_destinations_headline" android:textAllCaps="true" android:textAppearance="@style/TextAppearance.AppCompat.Headline" android:textSize="14sp" android:textStyle="bold" /> <android.support.v7.widget.RecyclerView android:id="@+id/featunetworking_destinations_recycler_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/destination_headline" app:layout_constraintBottom_toTopOf="@id/saved_trips_headline" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/destination_headline" /> <TextView android:id="@+id/saved_trips_headline" android:layout_width="match_parent" android:layout_height="wrap_content" android:fontFamily="sans-serif" android:text="@string/saved_trips" android:textAllCaps="true" android:textAppearance="@style/TextAppearance.AppCompat.Headline" android:textSize="14sp" android:textStyle="bold" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toTopOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@id/featunetworking_destinations_recycler_view" /> <android.support.v7.widget.RecyclerView android:id="@+id/saved_trips_recycler_view" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_constraintBottom_toTopOf="@id/app_bar" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@id/saved_trips_headline" /> </android.support.constraint.ConstraintLayout> </android.support.v4.widget.NestedScrollView> </android.support.constraint.ConstraintLayout> 

Entonces obtendrás este resultado:

enter image description here

@Tai M. El problema parece ser la altura codificada de NestedScrollView. Dado que ya está utilizando ConstraintLayout, puede colocar fácilmente esta vista sin tener que agregar otro layout relativo.

Si desea tener las imágenes de encabezado una encima de la otra, por favor envuélvalas en FrameLayout . Asigne un id al contenedor y agregue: app: layout_constraintTop_toBottomOf = "@ + id / headerImageContainer" al NestedScrollView.

Entonces probablemente pueda deshacerse de RelativeLayout y replacelo por otro RestraintLayout para estructurar el rest de las vistas usando solo restricciones.

Además, según la definición de layout de materiales, la altura de BottomNavigationView es de 56dp, que puede asignar directamente en lugar de hacerlo ajustar el contenido en el file activity_home.xml

 <ConstraintLayout ...> <FrameLayout ...> <ImageView .../> <ImageView .../> </FrameLayout> <NestenScrollView ... wrap_content> <ConstraintLayout ...> <TextView .../> <RecyclerView .../> <!-- Assign constraints accordingly --> <TextView .../> <RecyclerView .../> </ConstraintLayout> </NestenScrollView> </ConstraintLayout> 

Espero que esto ayude.