我有全屏显示的水平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);
在屏幕截图中,我展示了我想要的空间:
答案 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