Recyclerview cubierto por BottomNavigationView
He intentado la Biblioteca de soporte de Google BottomNavigationView con un Framelayout para mis fragmentos.
Aquí está mi código
- No se pudo encontrar: com.android.support:support-v4:22.2.0
- Java.lang.NoClassDefFoundError: android / graphics / drawable / Icono
- Soporte para Android Tipo de entrada EditTextPreference
- Cómo ajustar la distancia de golpe hacia abajo en SwipeRefreshLayout?
- ¿Cómo utilizar la biblioteca de preferencias v7 / v14?
<?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.
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>
- IllegalArgumentException: pointerIndex fuera de rango desde SwipeRefreshLayout
- Paquete de soporte de Android / Biblioteca de Compatibilidad - use v4 o v13?
- Android-support-v4 error generado con la eliminación de R.java
- Appcompat, compatibilidad y bibliotecas de soporte para Lollipop si SDK mínimo = 14
- SwipeRefreshLayout de la lib de soporte. V21 no funciona con contenido estático
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.
- Mueva su
BottomNavigationView
acontent_main.xml
y colóquelo dentro deRelativeLayout
- Añadir atributo
android:layout_alignParentBottom="true"
aBottomNavigationView
- Agregue el atributo
android:layout_above="@id/bottom_navigation"
al contenedorFrameLayout
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 } } })
- Biblioteca de soporte de las pestañas personalizadas
- Android SDK Versión 25 - android.support v7: 25 da "Ningún recurso encontrado que coincida con @ color / hint_foreground_material_light" Adobe Creative SDK?
- Generar APKLIB de compatibilidad-v7-appcompat
- ¿Cambiar la visibilidad de contraseña de Android no funciona con la biblioteca de soporte 25?
- No se puede resolver el símbolo AppCompatActivity - ¿No se reconocen las bibliotecas de soporte v7?
- Recyclerviews y SwipeRefreshLayout utilizando la biblioteca de soporte 23.2.0
- No se encontró ningún recurso que coincida con el nombre dado (en 'cardBackgroundColor' con el valor '? Android: attr / colorBackgroundFloating')
- Estilo SwipeRefreshLayout en r21 de la biblioteca de soporte
- ¿Cómo usar SwipeRefreshLayout?
- ConstraintLayout no funciona en el editor de GUI Android Studio 3.0 - Canary 4
- Biblioteca de soporte de Android v7 + Maven + Eclipse: dependencia apklib no encontrada en el espacio de trabajo