如何仅在滚动时在项目之间添加空格

时间:2018-03-23 17:05:00

标签: android android-recyclerview

我有全屏显示的水平RecyclerView。 这是我的活动布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

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

</RelativeLayout>

ViewHolder也在全屏显示。

项目布局:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clickable="true">

    <ImageView
        android:id="@+id/item_image"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
</FrameLayout>

结果我在屏幕上有一个RecyclerView项目。这就是我需要的。 但我不明白如何在滚动项目之间添加间距(如何在所有图片库应用程序上)。但我需要在滚动端看不到这个空间。

我如何初始化RecyclerView:

RecyclerView photoList = findViewById(R.id.photos_list);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, RecyclerView.HORIZONTAL, false);
        photoList.setLayoutManager(linearLayoutManager);


        PagerSnapHelper pagerSnapHelper = new PagerSnapHelper();
        pagerSnapHelper.attachToRecyclerView(photoList);

        PhotoListAdapter photoListAdapter = new PhotoListAdapter(this, photoResults);
        photoList.setAdapter(photoListAdapter);

在屏幕截图中,我展示了我想要的空间:

enter image description here

1 个答案:

答案 0 :(得分:1)

要获得此空间,您应使用DividerItemDecoration。您可以设置它的宽度和颜色。例如,

绘制

 <shape xmlns:android="http://schemas.android.com/apk/res/android"
           android:shape="rectangle">
        <size
            android:width="1dp"
            android:height="1dp" />
        <solid android:color="@color/primary" />
    </shape>

然后在回收者没有闲置时设置它

DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(getContext(),
                    LinearLayoutManager.VERTICAL);//or HORIZONTAL
dividerItemDecoration.setDrawable(getContext().getResources().getDrawable(R.drawable.sk_line_divider));
recyclerView.addItemDecoration(dividerItemDecoration);
当回收者闲置时,

或移除

recyclerView.removeItemDecoration(dividerItemDecoration);

要检测回收者是否正在滚动,请实施RecyclerView.OnScrollListener docs