带有自定义分隔线的 GridLayoutManager
GridLayoutManager with custom divider
我正在尝试使用 GridLayoutManager
在 RecyclerView
中添加自定义分隔符,但没有成功,我进行了很多搜索并查看了下面提到的答案,但它对我没有帮助
link 2
我想在 RecyclerView
的每个项目之间加上黑线,如下所示。
我在每一行之间都有水平线,但也找不到如何在列之间获得这些线。
答案非常有效,但它只在一种情况下产生问题,当我有 5 个视图时,它也显示其他 3 个项目的分隔线,如下所示:
根据您的要求,我创建了四列。这将有四列的三条垂直线
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@android:color/transparent"/>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@color/black"/>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@color/black"/>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@color/black"/>
</RelativeLayout>
</LinearLayout>
看看这个:https://bignerdranch.github.io/simple-item-decoration/
将此添加到您的应用级别 gradle 并同步:
compile 'com.bignerdranch.android:simple-item-decoration:1.0.0'
然后,应用如下代码:
Drawable horizontalDivider = ContextCompat.getDrawable(this, R.drawable.line_divider);
Drawable verticalDivider = ContextCompat.getDrawable(this, R.drawable.line_divider);
recyclerView.addItemDecoration(new GridDividerItemDecoration(horizontalDivider, verticalDivider, 4));
我的line_divider.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size
android:width="1dp"
android:height="1dp" />
<solid android:color="@android:color/black" />
</shape>
这只是我的快速回答。但我想这应该有用..
输出:
简单地说,用RecyclerView
在布局中编写你的XML文件
在您的 Activity 中编写以下代码以在 RecyclerView
中实现 GridLayoutManager
的分频器
RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(getApplicationContext(), 3);
recyclerView.setLayoutManager(mLayoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
DividerItemDecoration Hdivider = new DividerItemDecoration(recyclerView.getContext(), DividerItemDecoration.HORIZONTAL);
DividerItemDecoration Vdivider = new DividerItemDecoration(recyclerView.getContext(), DividerItemDecoration.VERTICAL);
Hdivider.setDrawable(ContextCompat.getDrawable(getBaseContext(), R.drawable.divider));
Vdivider.setDrawable(ContextCompat.getDrawable(getBaseContext(), R.drawable.divider));
recyclerView.addItemDecoration(Hdivider);
recyclerView.addItemDecoration(Vdivider);
在上面,添加了水平和垂直分隔线以获得整个网格外观。
Drawable 文件的外观可以完全符合您对应用程序的喜好。我的看起来像这样。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size
android:width="1dp"
android:height="1dp" />
<solid android:color="@color/white" />
</shape>
编码愉快!
我正在尝试使用 GridLayoutManager
在 RecyclerView
中添加自定义分隔符,但没有成功,我进行了很多搜索并查看了下面提到的答案,但它对我没有帮助
link 2
我想在 RecyclerView
的每个项目之间加上黑线,如下所示。
我在每一行之间都有水平线,但也找不到如何在列之间获得这些线。
根据您的要求,我创建了四列。这将有四列的三条垂直线
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@android:color/transparent"/>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@color/black"/>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@color/black"/>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@color/black"/>
</RelativeLayout>
</LinearLayout>
看看这个:https://bignerdranch.github.io/simple-item-decoration/
将此添加到您的应用级别 gradle 并同步:
compile 'com.bignerdranch.android:simple-item-decoration:1.0.0'
然后,应用如下代码:
Drawable horizontalDivider = ContextCompat.getDrawable(this, R.drawable.line_divider);
Drawable verticalDivider = ContextCompat.getDrawable(this, R.drawable.line_divider);
recyclerView.addItemDecoration(new GridDividerItemDecoration(horizontalDivider, verticalDivider, 4));
我的line_divider.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size
android:width="1dp"
android:height="1dp" />
<solid android:color="@android:color/black" />
</shape>
这只是我的快速回答。但我想这应该有用..
输出:
RecyclerView
在布局中编写你的XML文件
在您的 Activity 中编写以下代码以在 RecyclerView
GridLayoutManager
的分频器
RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(getApplicationContext(), 3);
recyclerView.setLayoutManager(mLayoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
DividerItemDecoration Hdivider = new DividerItemDecoration(recyclerView.getContext(), DividerItemDecoration.HORIZONTAL);
DividerItemDecoration Vdivider = new DividerItemDecoration(recyclerView.getContext(), DividerItemDecoration.VERTICAL);
Hdivider.setDrawable(ContextCompat.getDrawable(getBaseContext(), R.drawable.divider));
Vdivider.setDrawable(ContextCompat.getDrawable(getBaseContext(), R.drawable.divider));
recyclerView.addItemDecoration(Hdivider);
recyclerView.addItemDecoration(Vdivider);
在上面,添加了水平和垂直分隔线以获得整个网格外观。 Drawable 文件的外观可以完全符合您对应用程序的喜好。我的看起来像这样。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size
android:width="1dp"
android:height="1dp" />
<solid android:color="@color/white" />
</shape>
编码愉快!