it-roy-ru.com

Полоса прокрутки не отображается в RecyclerView

У меня есть RecyclerView, и я хочу, чтобы полоса прокрутки показывала, когда она занимает более одной страницы.

У меня вообще нет полосы прокрутки. Любая идея?

Мой макет:

<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

Решение состоит в том, чтобы установить вертикальную (или горизонтальную) полосу прокрутки в макете XML:

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

Используйте атрибут Android: scrollbars "вертикальный" и атрибут Android: scrollbarThumbVertical, чтобы установить цвет, а атрибут Android: scrollbarSize, чтобы указать размер:

<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

используйте recyclerView, как показано ниже в 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"  />

и добавьте ниже код для scrollview в Java, все будет хорошо

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

Вы можете использовать от:

setScrollbarFadingEnabled(boolean)

Ссылка полосы прокрутки

4
user4501847

У меня была такая же проблема только на моем старом HTC Desire X (api 16).
Я не знаю почему, но полосы прокрутки RecyclerView не работают должным образом на этом устройстве, если свойство Android:background не установлено. Попробуйте установить его на любой цвет или на прозрачный - он работает для меня, надеюсь, он вам тоже поможет

2
smbd uknow

Попробуй это:

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

Scroller может быть установлен в recyclerview несколькими способами. Во-первых, вы можете просто добавить полосу прокрутки в xml и установить ее свойство Android: fadeScrollbars = "false", чтобы всегда показывать ее. 

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

Или вы можете создать тему стиля и использовать ее программно при инициализации

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

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

спасибо

0
justchill

Если вы можете установить ScrollBar программно, тогда вы можете использовать ContextThemeWrapper. Сначала вам нужно определить стиль в файле Style.xml:

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

А затем примените стилизацию при инициализации RecylerView:

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

Помимо атрибута Android: scrollbars, вы должны добавить атрибут Android: fadeScrollbars в ложное состояние, например:

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

Таким образом, вертикальная полоса прокрутки всегда отображается, когда она использует большую высоту разрешенного макета.

0
Dan Ponce

Добавьте код в Recycler view xml, чтобы сделать полосу прокрутки видимой.

<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
Javith Ahmed Showkathali

На самом деле, это из-за темы. Полосы прокрутки есть, но их не видно, потому что они смешиваются с цветом в родительском представлении или каком-либо другом представлении в строке его предков.

Вы можете создать нарисованную фигуру и дать ей нужный цвет, а затем установить ее в качестве вертикальной или горизонтальной полосы прокрутки. То есть, если вы не хотите возиться с цветами вашей темы.

0
TheRealChx101