web-dev-qa-db-fra.com

Impossible d'ajouter une vue vide ci-dessous Recyclerview

J'essayais ma main avec recyclerview et un bouton d'action flottant pour une application. Le problème que j'ai rencontré est que le bouton d'action flottant gêne les boutons dans recyclerview. J'ai cherché comment les applications Android, telles que l'application pour téléphone (une application dans laquelle vous avez des contacts affichés dans gridvew), sont conçues pour traiter ce problème. Il suffit de faire défiler l'écran vers le bas pour éviter le chevauchement .. J'ai essayé d'ajouter une vue après la vue de recyclage, mais elle ne s'affiche pas. Cette vue doit également être déplacée avec les lignes de la vue de recyclage. Que manque-t-il pour afficher une vue à la fin de la vue recyclée ... Mon fichier de mise en page:

<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>

enter image description here

Mise à jour: Modifié le code de présentation pour le faire fonctionner.

<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"/>
27
Psypher

Ajoutez une marge de remplissage inférieure à RecyclerView . De plus, n'utilisez pas Android:layout_height="wrap_content" si vous n'avez pas remplacé onMeasure dans le gestionnaire de disposition. Les gestionnaires de disposition actuels ne prennent pas encore en charge le contenu intégré.

Ajoutez l'attribut Android:clipToPadding="false" pour atteindre l'objectif . Comme mentionné dans les commentaires.

43
yigit

Voici un exemple (dans ce cas une liste, mais pourrait être n'importe quoi) sous une vue recycleur qui occupe le reste de la hauteur du parent Notez les attributs layout_alignParentBottom et layout_above.

<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"
    />

2
Lars

J'ai créé une méthode utilitaire pour que vous puissiez facilement ajouter du rembourrage

public void addLastChildPadding(RecyclerView.ViewHolder holder,int padding,int recyclerListSize,int position){

if(recyclerListSize-1==position){
holder.itemView.setPadding(0,0,0,padding);
}
}
1
Manokar

Essayez ceci à la fois

<?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>

Supprimez les images et autres chaînes en fonction de vos utilisations.

0
AMAN SINGH