Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


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 } } }) 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.