Recyclerview cubierto por BottomNavigationView

He intentado la Biblioteca de soporte de Google BottomNavigationView con un Framelayout para mis fragmentos.

Aquí está mi código

<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout 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="match_parent" android:fitsSystemWindows="true" tools:context="com.bottombarnavigation.MainActivity"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <include layout="@layout/toolbar"/> </android.support.design.widget.AppBarLayout> <include layout="@layout/content_main" /> <android.support.design.widget.BottomNavigationView android:background="#fcfcfc" android:id="@+id/bottom_navigation" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom|end" app:menu="@menu/bottom_navigation" /> </android.support.design.widget.CoordinatorLayout> 

Cuando lleno mi Recyclerview dentro del Fragmento, su contenido es cubierto por BottomNavigationView.

Introduzca aquí la descripción de la imagen

No tengo ni idea de por qué sucede esto. Miro a través del tutorial de otras personas y funciona bien.

EDIT Aquí está mi archivo content_main.xml

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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="match_parent" android:background="@android:color/white" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="com.bottombarnavigation.MainActivity" tools:showIn="@layout/activity_main"> <FrameLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent"></FrameLayout> </RelativeLayout> 

5 Solutions collect form web for “Recyclerview cubierto por BottomNavigationView”

Aquí mi solución, está trabajando para mí.

Tengo casi la misma disposición que usted, moví el BottomNavigationView fuera del CoordinatorLayout pues no necesito ninguna animación en él. He alineado BottomNavigationView a la parte inferior de los padres y agregado layout_above a CoordinatorLayout para tenerlo encima de BottomNavigationView pero llenando toda la pantalla.

Con esta configuración he arreglado el problema de superposición, espero que esto te ayude.

Aquí tienes mi diseño.

  <RelativeLayout 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="match_parent" tools:context=".ui.activities.MainActivity"> <android.support.design.widget.CoordinatorLayout android:id="@+id/main_coordinator" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" android:layout_above="@+id/dashboard_navigation"> <android.support.design.widget.AppBarLayout android:id="@+id/main_appbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:elevation="16dp"> <android.support.v7.widget.Toolbar android:id="@+id/dashboard_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@color/colorPrimary"/> </android.support.design.widget.AppBarLayout> <FrameLayout android:id="@+id/main_frame_layout" android:layout_width="match_parent" android:layout_height="match_parent"/> </android.support.design.widget.CoordinatorLayout> <android.support.design.widget.BottomNavigationView android:id="@+id/dashboard_navigation" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:background="@color/colorPrimaryDark" app:itemTextColor="@color/colorAccent" app:menu="@menu/menu_main"/> </RelativeLayout> 

Proporcione una altura estática en dp para BottomNavigationView en lugar de wrap_content porque su diseño padre i, e el diseño del coordinador amplía framelayout cuyo comportamiento predeterminado está colocando sus vistas secundarias una encima de la otra. Ese es su contenedor de fragmentos está cubierto por botomnavigationview.

Fije el veil del reciclado o cualquier visión su adentro, altura a 0dp y peso 1. Esto hará que toma todo el espacio disponible a la izquierda.

  1. Mueva su BottomNavigationView a content_main.xml y colóquelo dentro de RelativeLayout
  2. Añadir atributo android:layout_alignParentBottom="true" a BottomNavigationView
  3. Agregue el atributo android:layout_above="@id/bottom_navigation" al contenedor FrameLayout

Actualice el XML de su diseño como se indica a continuación:

Activity_main.xml:

 <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout 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="match_parent" android:fitsSystemWindows="true" tools:context="com.bottombarnavigation.MainActivity"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <include layout="@layout/toolbar"/> </android.support.design.widget.AppBarLayout> <include layout="@layout/content_main" /> </android.support.design.widget.CoordinatorLayout> 

Content_main.xml:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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="match_parent" android:background="@android:color/white" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="com.bottombarnavigation.MainActivity" tools:showIn="@layout/activity_main"> <android.support.design.widget.BottomNavigationView android:id="@+id/bottom_navigation" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:background="#fcfcfc" app:menu="@menu/bottom_navigation" /> <FrameLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@id/bottom_navigation" /> </RelativeLayout> 

Espero que esto ayude ~

Puede agregar un ItemDecorator a su vista de reciclador que añade un relleno. Estoy usando Kotlin en lugar de Java, pero la idea general es:

  recyclerView.addItemDecoration(object : RecyclerView.ItemDecoration() { override fun getItemOffsets(outRect: Rect?, view: View?, parent: RecyclerView?, state: RecyclerView.State?) { // Get the position of the view in the recycler view val position = parent?.getChildAdapterPosition(view) if (position == null || position == RecyclerView.NO_POSITION) { return } if (position == parent.adapter.itemCount - 1) { // Add padding to the last item. You should probably use a @dimen resource. outRect?.bottom = 200 } } }) 
  • IllegalArgumentException: pointerIndex fuera de rango desde SwipeRefreshLayout
  • Android-support-v4 error generado con la eliminación de R.java
  • ¿Cómo usar SwipeRefreshLayout?
  • Recyclerviews y SwipeRefreshLayout utilizando la biblioteca de soporte 23.2.0
  • SwipeRefreshLayout de la lib de soporte. V21 no funciona con contenido estático
  • Generar APKLIB de compatibilidad-v7-appcompat
  • No se puede resolver el símbolo AppCompatActivity - ¿No se reconocen las bibliotecas de soporte v7?
  • ConstraintLayout no funciona en el editor de GUI Android Studio 3.0 - Canary 4
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.