AndroidRecyclerView中的分割线
创始人
2024-10-09 18:01:35
0
  1. 使用 DividerItemDecoration 类

在 RecyclerView 中添加分割线最简单的方法是使用 DividerItemDecoration 类。这个类可以在 RecyclerView 中添加分隔线并控制它的样式和颜色。

下面是使用 DividerItemDecoration 类实现 RecyclerView 分割线的示例代码:

// 创建一个 DividerItemDecoration 对象并设置样式
DividerItemDecoration divider = new DividerItemDecoration(context, DividerItemDecoration.VERTICAL);
divider.setDrawable(ContextCompat.getDrawable(context, R.drawable.divider));

// 将 DividerItemDecoration 添加到 RecyclerView
recyclerView.addItemDecoration(divider);
  1. 使用 ItemDecoration 类

如果您需要更自定义的分割线样式,则可以使用 RecyclerView 的 ItemDecoration 类来实现。该类可用于自定义任何视图项和分割线的外观。

下面是使用 ItemDecoration 类实现 RecyclerView 分割线的示例代码:

// 创建一个 RecyclerItemDecoration 类,并重写 getItemOffsets() 和 onDraw() 方法
public class RecyclerItemDecoration extends RecyclerView.ItemDecoration {

    private Drawable divider;

    public RecyclerItemDecoration(Context context, int resId) {
        divider = ContextCompat.getDrawable(context, resId);
    }

    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
        if(parent.getChildAdapterPosition(view) != 0) {
            outRect.top = divider.getIntrinsicHeight();
        }
    }

    @Override
    public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
        int dividerLeft = parent.getPaddingLeft();
        int dividerRight = parent.getWidth() - parent.getPaddingRight();

        int childCount = parent.getChildCount();
        for(int i = 0; i < childCount; i++) {
            View child = parent.getChildAt(i);

            RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();

            int dividerTop = child.getBottom() + params.bottomMargin;
            int dividerBottom = dividerTop + divider.getIntrinsicHeight();

            divider.setBounds(dividerLeft, dividerTop, dividerRight, dividerBottom);
            divider.draw(c);
        }
    }
}

// 将 RecyclerItemDecoration 添加到 RecyclerView
recyclerView.addItemDecoration(new RecyclerItemDecoration(context, R.drawable.divider));
  1. 使用 DividerItemDecoration 和 ItemDecoration 结合

如果您需要同时具有多种样式的分隔线,则可以结合使用 DividerItemDecoration 和 ItemDecoration。

下面是结合使用 DividerItemDecoration 和 ItemDecoration 实现 RecyclerView 分割线的示例代码:

// 创建一个 ItemDecoration 类,并重写 getItemOffsets() 和 onDraw

相关内容

热门资讯

9分钟了解!情怀麻将友内置挂吗... 9分钟了解!情怀麻将友内置挂吗,闲来麻将输赢靠系统吗,透视教程(有挂技巧);1、闲来麻将输赢靠系统吗...
七分钟了解!兴动助手有挂吗,福... 七分钟了解!兴动助手有挂吗,福建老友麻将有挂的吗,详细教程(有挂方法)进入游戏-大厅左侧-新手福利-...
两分钟了解!闽游福建十三水辅助... 两分钟了解!闽游福建十三水辅助器哪里买,手机上南通长牌有没有外挂,微扑克教程(有挂实操)1.闽游福建...
十分钟了解!豆豆斗牌有辅助吗,... 十分钟了解!豆豆斗牌有辅助吗,开心十三张有外挂吗,AI教程(有挂辅助挂)1、金币登录送、破产送、升级...
8分钟了解!兴动棋牌软件有挂吗... 8分钟了解!兴动棋牌软件有挂吗,闽游十三水辅助器,必赢方法(有挂秘笈);1、下载好兴动棋牌软件有挂吗...
五分钟了解!新蜜瓜正版有没有外... 五分钟了解!新蜜瓜正版有没有外 挂,中至鹰潭麻将有挂吗,扑克教程(有挂方法)1、这是跨平台的新蜜瓜正...
3分钟了解!财神十三张增加胜率... 3分钟了解!财神十三张增加胜率,ccpoker有挂吗,普及教程(有挂插件)1、每一步都需要思考,不同...
五分钟了解!边锋绍兴麻将有挂吗... 五分钟了解!边锋绍兴麻将有挂吗,喜扣跑胡子有外挂吗,细节方法(有挂科普)小薇(透视辅助)致您一封信;...
3分钟了解!中至吉安麻将有挂吗... 3分钟了解!中至吉安麻将有挂吗,新科乐棋牌有没有挂,安装教程(有挂教程);1、每一步都需要思考,不同...
2分钟了解!陕麻圈吗,可乐斗地... 2分钟了解!陕麻圈吗,可乐斗地主残局修改器,靠谱教程(有挂攻略);一、可乐斗地主残局修改器软件透明挂...