recyclerview给头尾添加圆角背景
时间: 2023-12-08 21:05:21 浏览: 40
要给 RecyclerView 的头部和尾部添加圆角背景,可以采用以下步骤:
1. 定义一个自定义的 Drawable,可以在 drawable 目录下新建一个 XML 文件,命名为 round_bg.xml,代码如下:
```
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:topLeftRadius="10dp"
android:topRightRadius="10dp"
android:bottomLeftRadius="10dp"
android:bottomRightRadius="10dp"/>
<solid android:color="@color/white"/>
</shape>
```
该 Drawable 定义了一个矩形的圆角背景,四个角的圆角半径均为 10dp,填充颜色为白色。
2. 在 RecyclerView 的 Adapter 中,重写 getItemViewType 方法,在其中判断当前位置是否为头部或尾部,返回不同的 ViewType。例如:
```
@Override
public int getItemViewType(int position) {
if (position == 0) {
return VIEW_TYPE_HEADER;
} else if (position == getItemCount() - 1) {
return VIEW_TYPE_FOOTER;
} else {
return VIEW_TYPE_ITEM;
}
}
```
3. 在 onCreateViewHolder 方法中创建对应的 ViewHolder,并根据 ViewType 设置不同的布局和背景。例如:
```
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == VIEW_TYPE_HEADER) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.header_layout, parent, false);
view.setBackground(ContextCompat.getDrawable(parent.getContext(), R.drawable.round_bg));
return new HeaderViewHolder(view);
} else if (viewType == VIEW_TYPE_FOOTER) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.footer_layout, parent, false);
view.setBackground(ContextCompat.getDrawable(parent.getContext(), R.drawable.round_bg));
return new FooterViewHolder(view);
} else {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_layout, parent, false);
return new ItemViewHolder(view);
}
}
```
4. 最后,在对应的布局文件中,可以根据需求自定义头部和尾部的样式。
以上就是在 RecyclerView 中给头部和尾部添加圆角背景的步骤。