web-dev-qa-db-fra.com

La barre de défilement ne s'affiche pas dans RecyclerView

J'ai une RecyclerView et j'aimerais afficher la barre de défilement lorsqu'elle couvre plus d'une page.

Je n'ai aucune barre de défilement du tout. Une idée?

Ma mise en page:

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:orientation="vertical" >

    <CheckBox
        Android:id="@+id/cl_only_empty"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:elevation="5dp"
        Android:text="@string/cl_only_empty"
        Android:textColor="@color/white" />

    <Android.support.v7.widget.RecyclerView
        Android:id="@+id/callsList"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:scrollbars="vertical" />

</LinearLayout>
33
Michael Schmidt

La solution consiste à définir la barre de défilement verticale (ou horizontale) dans la présentation XML:

<Android.support.v7.widget.RecyclerView
      Android:layout_width="match_parent"
      Android:layout_height="match_parent"
      Android:scrollbars="vertical" />
32
jujux789

Utilisez Android: attribut "scrollbars" "vertical" et Android: attribut scrollbarThumbVertical pour définir la couleur et attribut Android: scrollbarSize pour spécifier la taille:

<Android.support.v7.widget.RecyclerView
        Android:id="@+id/document_listview"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_marginBottom="3dp"
        Android:layout_marginTop="3dp"
        Android:scrollbars="vertical"
        Android:scrollbarThumbVertical="@Android:color/darker_gray"
        Android:scrollbarSize="5dp"
        Android:background="@color/activity_bg"
        Android:dividerHeight="4dp" />
18
Mandeep Yadav

utiliser recyclerView comme ci-dessous en format XML 

   <Android.support.v7.widget.RecyclerView
    Android:id="@+id/recyclerView"
    Android:scrollbars="vertical"
    Android:fadeScrollbars="true"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"  />

et ajoutez le code ci-dessous pour scrollview en Java, tout ira bien

 RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
 recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));
 recyclerView.setHasFixedSize(true);
8
Soe Naing Tun

Vous pouvez utiliser de:

setScrollbarFadingEnabled(boolean)

Lien barre de défilement

4
user4501847

J'ai eu le même problème sur mon ancien HTC Desire X (api 16) uniquement.
Je ne sais pas pourquoi, mais les barres de navigation de RecyclerView ne fonctionnent pas correctement sur ce périphérique si la propriété Android:background n'est pas définie. Essayez de le régler sur n’importe quelle couleur ou sur transparent - cela fonctionne pour moi, espérons que cela vous aidera aussi

2
smbd uknow

Essaye ça:

mLayoutManager = new LinearLayoutManager (this);  
mLayoutManager.setSmoothScrollbarEnabled (true);
2
mio4kon

Scroller peut être défini sur recyclerview de plusieurs façons . D'abord, vous pouvez simplement ajouter une barre de défilement xml et définir sa propriété Android: fadeScrollbars = "false" pour l'afficher en permanence. 

<Android.support.v7.widget.RecyclerView
        Android:id="@+id/recyclerViewMachine"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
         Android:scrollbars="vertical"
        Android:fadeScrollbars="false"
        Android:scrollbarThumbVertical="@Android:color/darker_gray"
        Android:scrollbarSize="5dp"
        Android:scrollbarStyle="outsideOverlay"/>

Ou vous pouvez créer un thème de style et l'utiliser de manière programmée lors de l'initialisation de Recyclerview

  <style name="ScrollbarRecyclerView" parent="Android:Widget">
        <item name="Android:scrollbars">vertical</item>
    </style>

RecyclerView recyclerView = new RecyclerView(new ContextThemeWrapper(context, R.style.ScrollbarRecyclerView));

merci

0
justchill

Si vous êtes en mesure de définir ScrollBar par programme, vous pouvez utiliser ContextThemeWrapper. Vous devez d’abord définir le style dans le fichier Style.xml:

<style name="ScrollbarRecyclerView" parent="Android:Widget">
    <item name="Android:scrollbars">vertical</item>
</style>

Et appliquez ensuite le style lorsque vous initialisez votre RecylerView:

RecyclerView recyclerView = new RecyclerView(new ContextThemeWrapper(context, R.style.ScrollbarRecyclerView));
0
Sa Qada

Outre l'attribut Android: scrollbars, vous devez ajouter l'attribut Android: fadeScrollbars dans l'état false, comme ceci:

<Android.support.v7.widget.RecyclerView
  Android:layout_width="match_parent"
  Android:layout_height="match_parent"
  Android:scrollbars="vertical"
  Android:fadeScrollbars="false"/>

De cette façon, la barre de défilement verticale est toujours affichée quand elle utilise plus de hauteur de la disposition autorisée.

0
Dan Ponce

Ajoutez le code à la vue Recycler XML pour rendre la barre de défilement visible.

<Android.support.v7.widget.RecyclerView
 Android:layout_width="match_parent"
 Android:layout_height="match_parent"
 Android:fadeScrollbars="false"
 Android:scrollbars="vertical"
 Android:scrollbarSize="@dimen/_2sdp"
 Android:scrollbarThumbVertical="@color/white"/>
0

En fait, c'est à cause du thème. Les barres de défilement sont là mais ne peuvent pas être vues car elles se fondent dans la couleur de la vue parente ou dans une autre vue dans la ligne de ses ancêtres.

Vous pouvez créer une forme pouvant être dessinée et lui donner la couleur souhaitée, puis définir celle-ci comme barre de défilement verticale ou horizontale. Autrement dit, si vous ne voulez pas perdre votre temps avec les couleurs de votre thème.

0
TheRealChx101