RecyclerView 的滚动条未出现在屏幕边缘

RecyclerView's scrollbar not appearing on edge of screen

我试图在我的 RecyclerView 周围添加边距,同时确保它可以垂直滚动,但由于某种原因,滚动条没有将自己定位在屏幕的 end/right 处。这是 Android X 特有的问题吗?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/myLinearLayout"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingStart="@dimen/activity_horizontal_margin"
        android:paddingEnd="@dimen/activity_horizontal_margin">

    <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/myRecyclerView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:scrollbars="vertical"/>

</LinearLayout>

Is this an issue specific to Android X?

不是真的。

这里的问题是您在 RecyclerView 的容器上指定了填充。

android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingStart="@dimen/activity_horizontal_margin"
android:paddingEnd="@dimen/activity_horizontal_margin"

这是因为用于绘制滚动条的矩形仅限于绘制RecyclerView 的矩形。这也是因为滚动条约束在上面的原因。

删除这些,您将获得位于屏幕边框上的滚动条。

也检查this related question

解释:

该栏在回收站视图中,回收站受填充限制。

快速修复:

向回收视图添加填充


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/myLinearLayout"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:paddingBottom="@dimen/activity_vertical_margin">

    <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/myRecyclerView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:scrollbars="vertical"
            android:paddingEnd.../>

</LinearLayout>

良好做法: 列表应该是全宽的,这样用户交互就不会受到未知间距的阻碍。将填充物添加到您在适配器中充气的物品。