47

我有一个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>
4

12 回答 12

37

解决方法是在xml布局中设置垂直(或水平)滚动条:

<android.support.v7.widget.RecyclerView
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:scrollbars="vertical" />
于 2015-01-07T21:30:31.403 回答
30

使用 android:scrollbars 属性 "vertical" 和 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" />
于 2017-04-11T08:25:40.230 回答
9

在 xml 布局中使用如下 recyclerView

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

并在java中为scrollview添加下面的代码,就可以了

 RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
 recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));
 recyclerView.setHasFixedSize(true);
于 2015-07-10T18:28:07.227 回答
5

您可以使用来自:

setScrollbarFadingEnabled(boolean)

滚动条链接

于 2015-03-07T06:01:38.347 回答
5

我只在我的旧 HTC Desire X (api 16) 上遇到了同样的问题。
我不知道为什么,但是如果未设置RecyclerView该属性,scollbars of 在此设备上无法正常工作。android:background尝试将其设置为任何颜色或透明 - 它适用于我,希望它也可以帮助你

于 2015-08-05T08:27:48.883 回答
5

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

或者您可以制作一个样式主题并在初始化 recyclerview 时以编程方式使用它

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

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

谢谢

于 2018-08-04T12:37:29.083 回答
4

除了 android:scrollbars 属性,你应该像这样在 false 状态下添加 android:fadeScrollbars 属性:

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

这样,垂直滚动条总是在它使用更多允许的布局高度时显示。

于 2017-03-08T14:55:11.217 回答
2

尝试这个:

mLayoutManager = new LinearLayoutManager (this);  
mLayoutManager.setSmoothScrollbarEnabled (true);
于 2014-12-25T02:54:57.633 回答
0

使用xml android:fadeScrollbars="false"

使用java ScrollView.setScrollbarFadingEnabled(false);

于 2019-09-04T02:30:34.743 回答
0

如果您可以以编程方式设置 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));
于 2017-01-30T14:16:42.727 回答
0

其实是因为主题。滚动条在那里但看不到,因为它们与父视图或其祖先行中的某些其他视图上的颜色混合。

您可以创建一个可绘制形状并为其赋予所需的颜色,然后将其设置为可绘制的垂直或水平滚动条。也就是说,如果您不想弄乱您的主题颜色。

于 2019-01-14T22:46:33.140 回答
0

将代码添加到 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"/>
于 2017-08-17T12:51:07.243 回答