Yo estaba tratando de mi mano con recyclerview y flotante botón de acción para una aplicación. El problema que me encontré es que el flotante botón de acción dificulta con los botones en recyclerview. Miré cómo las aplicaciones de android, tales como la aplicación de teléfono(uno donde tienes los contactos que aparecen en gridvew) están diseñados para lidiar con esto, veo que hay espacio vacío a la izquierda en la parte inferior que da espacio entre recyclerview y flotante botón de acción, el usuario solamente tiene que desplazarse a la parte inferior para evitar la superposición.
He intentado añadir una vista después de recyclerview pero no su no obtención de muestra, también este punto de vista debe mover junto con el recyclerview filas. Lo que me estoy perdiendo para mostrar una vista en la final de la recyclerview.
Mi archivo de diseño:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#6fbababa">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/my_recycler_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scrollbars="vertical"/>

    <ImageButton
        android:id="@+id/button_floating_action"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:src="@drawable/ic_fab"
        android:background="@null"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="12dp"
        android:layout_marginEnd="12dp"
        android:layout_marginRight="12dp"
        android:elevation="2dp"/>

    <View
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:layout_below="@id/my_recycler_view"
        android:background="@color/white"/>

</RelativeLayout>

No se pueden agregar vista vacía debajo de Recyclerview

Actualización: Modificado el diseño de código para que funcione.

<android.support.v7.widget.RecyclerView 
android:id="@+id/my_recycler_view" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:clipToPadding="false" 
android:paddingBottom="30dp" 
android:scrollbars="vertical"/>
  • Todo lo que necesitas es salir de la RecyclerView a ser dibujado última. Ver el ejemplo en mi respuesta. HTH
InformationsquelleAutor Psypher | 2015-01-04

4 Comentarios

  1. 45

    Agregar margen inferior a la RecyclerView.
    También, no use android:layout_height="wrap_content" a menos que usted haya anulado onMeasure en el gestor de diseño. Diseño actual de los gerentes no soporta todavía envoltura de contenido.

    Agregar el atributo android:clipToPadding="false" para lograr el objetivo.
    Como se ha mencionado en los comentarios.

    • La adición de relleno para el recyclerview está causando una sección de la pantalla para ser ocupado que está cortando la vista a la fila en la final de la pantalla. No mostrando el espacio vacío debajo de la última fila, en lugar de su muestra más de la lastrow
    • Sólo resuelve ese problema…también tenemos que añadir android:clipToPadding=»false» en recyclerview..este es el resultado final que trabajó para mí <android.apoyo.v7.widget.RecyclerView android:id=»@+id/my_recycler_view» android:layout_width=»match_parent» android:layout_height=»match_parent» android:clipToPadding=»false» android:paddingBottom=»30dp» android:scrollbars=»vertical»/>
    • Trabajó también para mí!
    • Esto funcionó muy bien para el GridView así.
    • impresionante, me alegró el día 🙂
    • En realidad es compatible con wrap_content. El problema es que no vuelve a calcular después de que los nuevos elementos se dibuja en la pantalla. Pero funciona muy bien para los elementos anteriores. Así que todo lo que necesita hacer es dejar RecyclerView último en el archivo de diseño. Y usted puede fijar el elemento de colocar con un RelativeLayout. Compruebe mi respuesta.
    • Esta solución hace que mi vista inferior desaparecer en el desplazamiento hacia arriba. Alguien sabe por qué?
    • android:layout_height=»wrap_content» ahora se admite después el apoyo de la biblioteca 23.2. android desarrolladores.blogspot.ca/2016/02/…
    • Para evitar que las barras de desplazamiento se recorta puede agregar android:scrollbarStyle="outsideOverlay" además.

  2. 2

    He aquí un ejemplo (en este caso de un listView, pero podría ser cualquier cosa) debajo de una recicladora de vista que ocupa el resto de los padres de altura. Nota layout_alignParentBottom y layout_above atributos.

    <RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    
    <ListView
        android:id="@+id/list_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scrollbars="none"
        **android:layout_alignParentBottom="true"**
        />
    
    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="vertical"
        android:layout_above="@+id/list_view"
        />

  3. 1

    He creado un método de utilidad para que así usted puede agregar relleno fácilmente

    public void addLastChildPadding(RecyclerView.ViewHolder holder,int padding,int recyclerListSize,int position){
    
    if(recyclerListSize-1==position){
    holder.itemView.setPadding(0,0,0,padding);
    }
    }
  4. 0

    Probar este a la vez

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    
    
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <android.support.v7.widget.RecyclerView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:clipToPadding="false">
    
            </android.support.v7.widget.RecyclerView>
        </RelativeLayout>
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="15dp">
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:orientation="horizontal">
    
                <android.support.v7.widget.AppCompatButton
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginRight="15dp"
                    android:layout_weight="1"
                    android:background="@drawable/button_primary_color_border"
                    android:text="70%"
                    android:textColor="@android:color/darker_gray"
                    android:textSize="20sp" />
    
                <android.support.v7.widget.AppCompatButton
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginRight="15dp"
                    android:layout_weight="1"
                    android:background="@drawable/button_primary_color_border"
                    android:text="60%"
                    android:textColor="@android:color/darker_gray"
                    android:textSize="20sp" />
            </LinearLayout>
        </RelativeLayout>
    
    </RelativeLayout>
    </LinearLayout>
    
    </LinearLayout>

    Eliminar las imágenes y los otros de la cadena de acuerdo a sus usos.

Dejar respuesta

Please enter your comment!
Please enter your name here