滚动条未显示在RecyclerView中

时间:2014-12-09 10:06:02

标签: android android-layout android-recyclerview android-scrollbar

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

12 个答案:

答案 0 :(得分:33)

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

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

答案 1 :(得分:17)

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

答案 2 :(得分:8)

在xml布局中使用recyclelerView,如下所示

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

答案 3 :(得分:4)

您可以使用:

setScrollbarFadingEnabled(boolean)

Scrollbar Link

答案 4 :(得分:2)

试试这个:

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

答案 5 :(得分:2)

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

答案 6 :(得分:1)

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

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

答案 7 :(得分: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));

答案 8 :(得分: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"/>

答案 9 :(得分:0)

可以通过多种方式将滚动条设置为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));

谢谢

答案 10 :(得分:0)

实际上,是因为主题。滚动条在那里,但无法看到,因为它们与父视图或祖先行中的其他视图上的颜色融合在一起。

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

答案 11 :(得分:0)

使用 xml onClickSeat

使用 java android:fadeScrollbars="false"