Подтвердить что ты не робот

Полоса прокрутки, не отображаемая в 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>
4b9b3361

Ответ 1

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

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

Ответ 2

Используйте андроид: атрибут прокрутки "вертикальный" и андроид: scrollbarThumbVertical для установки цвета и андроида: атрибут 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" />

Ответ 3

используйте 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);

Ответ 5

Попробуйте следующее:

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

Ответ 6

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

Ответ 7

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

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

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

Ответ 8

Скроллер может быть настроен на утилитацию просмотра несколькими способами. Во-первых, вы можете просто добавить полосу прокрутки в 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));

спасибо

Ответ 9

Если вы настроили программно 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));

Ответ 10

Добавьте код в список просмотра Recycler 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"/>

Ответ 11

просто нужно поместить RecyclerView в ScrollView следующим образом:

<ScrollView
    android:id="@+id/scroll"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

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

</ScrollView>

Ответ 12

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

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

Ответ 13

Использование xml android:fadeScrollbars="false"

Использование java ScrollView.setScrollbarFadingEnabled(false);