RecyclerView 自定义当前选中时的样式
时间: 2023-09-02 15:13:16 浏览: 42
要自定义RecyclerView中项目被选中时的样式,可以使用RecyclerView的ItemDecoration。以下是一个示例:
```java
public class CustomItemDecoration extends RecyclerView.ItemDecoration {
private Drawable mSelectedBackground;
public CustomItemDecoration(Context context) {
// 获取选中时的背景
mSelectedBackground = ContextCompat.getDrawable(context, R.drawable.selected_background);
}
@Override
public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
super.onDrawOver(c, parent, state);
// 获取当前选中的位置
int selectedPosition = ((LinearLayoutManager) parent.getLayoutManager()).findFirstVisibleItemPosition();
if (selectedPosition == RecyclerView.NO_POSITION) {
return;
}
// 获取选中的View
View selectedView = parent.findViewHolderForAdapterPosition(selectedPosition).itemView;
// 设置选中的View的背景
mSelectedBackground.setBounds(selectedView.getLeft(), selectedView.getTop(), selectedView.getRight(), selectedView.getBottom());
mSelectedBackground.draw(c);
}
}
```
在这个示例中,我们创建了一个名为CustomItemDecoration的ItemDecoration,它会在RecyclerView中的每个项目上绘制一个背景。我们还重写了onDrawOver方法,以便在当前选中的项目上绘制一个不同的背景。要使用这个ItemDecoration,只需将其添加到RecyclerView中:
```java
recyclerView.addItemDecoration(new CustomItemDecoration(context));
```
注意,这个示例中的选中样式只是一个简单的背景,您可以根据自己的需要定制更复杂的样式。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)