Android之使用GirdLayoutManager时候给Item设置边距

news2024/12/28 3:29:17

效果:
在这里插入图片描述

一、自定义设置边距方法

SpaceItemDecoration.java

package com.custom.jfrb.ui.jfrb.finishedProduct; //自己包名位置

import android.graphics.Rect;
import android.view.View;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

/**
 * create by niuxi on 2023/9/26
 * 自定义类,GridLayoutManager设置边距
 */
public class SpaceItemDecoration extends RecyclerView.ItemDecoration {

    private int space; //边距值
    private int itemNum; //每行item数量

    public SpaceItemDecoration(int space,int itemNum) {
        this.space = space;
        this.itemNum = itemNum;
    }

    @Override
    public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
        outRect.left = space;
        outRect.right = space;
        outRect.bottom = space;
        outRect.top = space;
        if (itemNum == 2){
            //一行两个时候,两个item靠近外面的那一边不设置边距
            if (parent.getChildLayoutPosition(view)%itemNum == 0){
                outRect.left = 0;
            }else if (parent.getChildLayoutPosition(view)%itemNum == 1){
                outRect.right = 0;
            }
        }
    }
}

二、Activity中调用设置边距

例子:给RecyclerView设置排列方式和边距

@InjectView(id = R.id.recyclerview_all_products)
private RecyclerView mRecyclerViewAllProducts;

private ProductAdapter adapter;

private List<FilePageBean> mList = new ArrayList<>();

重点看这里设置边距调用的方法

//设置适配器(自定义)
adapter = new ProductAdapter();
mRecyclerViewAllProducts.setAdapter(adapter);

//设置布局方式
mRecyclerViewAllProducts.setLayoutManager(new GridLayoutManager(this,2));

//设置默认动画
mRecyclerViewAllProducts.setItemAnimator(new DefaultItemAnimator());

//设置边距值为10 item数量为2
mRecyclerView.addItemDecoration(new SpaceItemDecoration(10,2));
mRecyclerView.setPadding(0,0,0,0);

附:自定义的适配器
R.layout.list_item是单个Item的布局xml文件(可自定义)

class ProductAdapter extends RecyclerView.Adapter<MyViewHoder> {

        @NonNull
        @Override
        public MyViewHoder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = View.inflate(FinishedProductActivity.this, R.layout.list_item, null);
            return new MyViewHoder(view);
        }

        @Override
        public void onBindViewHolder(@NonNull FinishedProductActivity.MyViewHoder holder, int position) {
            FilePageBean item = mList.get(position);
            holder.mTvProductTitle.setText(item.getName());
            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                   //Item点击监听
                }
            });
        }

        @Override
        public int getItemCount() {
            return mList.size();
        }

        public void refreshData(List<FilePageBean> list){
            mList.clear();
            mList.addAll(list);
            notifyDataSetChanged();
        }
    }

    static class MyViewHoder extends RecyclerView.ViewHolder {
        TextView mTvProductTitle;

        public MyViewHoder(@NonNull View itemView) {
            super(itemView);
            mTvProductTitle = itemView.findViewById(R.id.tv_product_title);
        }
    }

三、完成,Nice!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1109839.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

threejs(2)-Geometry进阶详解

一、全面讲解UV与应用 在本节中&#xff0c;我们将讨论Three.js中的UV映射&#xff0c;包括UV映射的概念、与顶点位置的关系和区别以及如何在Geometry中设置UV坐标。我们将使用BufferGeometry进行示例说明。 颜色对应 什么是UV映射&#xff1f; UV映射是一种将二维纹理映…

【根据车间号[81321000]未找到ERP逻辑仓】

以条码Z42310062781622举例&#xff0c;WMS集成报错。 先说业务逻辑&#xff1a; 新建包装工单&#xff0c;维护包装批次管制时&#xff0c;会把包装批次管制里的部门信息传给115。 赛龙捷包装后&#xff0c;会根据115里的这个部门对应的车间号&#xff0c;返还给MES。 MES会…

程序连接oracle查询数据的环境配置

连接oracle 数据库真麻烦&#xff0c;还是MySQL方便 Oracle Instant Client 这个东西的版本跟oracle的版本是有讲究的&#xff0c;引用文档的说明 Oracle 标准的客户端-服务器网络互操作性允许不同版本的 Oracle 客户端和 Oracle 数据库之间的连接。有关经过认证的配置&#…

springboot之quartz动态可控定时任务

Quartz Quartz是一个开源的任务调度框架&#xff0c;可以用来实现定时任务的调度&#xff0c;如定时发送邮件、定时备份数据等。Quartz具有很高的可靠性和灵活性&#xff0c;支持集群部署和分布式调度&#xff0c;并且提供了丰富的API和插件&#xff0c;可以轻松实现复杂的调度…

2023年中国GPS导航设备产量、销量及市场规模分析[图]

GPS导航设备行业是指生产和销售用于导航、定位和监控目的的GPS设备的行业&#xff0c;可以用于汽车、船只、飞机、人员和其他物体的定位和导航&#xff0c;以及用于地理信息系统&#xff08;GIS&#xff09;、测绘、海洋抢险、森林监测、地质勘探、气象预报、交通管理、物流跟踪…

中国地级市-环境规制18个相关指标数据(2002-2021年)

本次数据为地级市-环境规制相关指标&#xff0c;主要用于计算城市的环境规制、污染排放水平。指标数目总计18个&#xff0c;数据来源为《中国城市统计年鉴》&#xff0c;存在一定缺失。数据包含原始、线性插值、回归填补3个版本&#xff0c;希望对大家有用 一、数据介绍 数据…

uni-app:js二维数组与对象数组之间的转换

一、二维数组整理成对象数组 效果 [ ["前绿箭","DI10","RO1"], ["前红叉","DI2","RO2"], ["后绿箭","DI12","RO3"], ["后红叉","DI4","RO6"] ] …

2023国考证件照要求什么底色?证件照换背景底色的方法

2023年国家公务员考试报名已经开始了&#xff0c;我们在考试平台提交报名信息的时候&#xff0c;有一项就是需要上传证件照片&#xff0c;对于证件照片也会有具体的要求&#xff0c;比如背景底色、尺寸大小、dpi和kb大小。今天就为大家详细介绍一下关于国考证件照背景色的内容&…

数据结构与算法课后题-第六章(图的存储及基本操作)

文章目录 1、选择题12、选择题23、选择题34、选择题45、选择题56、选择题67、选择题78、选择题89、选择题910、选择题1011、选择题1112、选择题1214、选择题1415、选择题1516、选择题16 1、选择题1 2、选择题2 3、选择题3 4、选择题4 5、选择题5 6、选择题6 7、选择题7 8、选择…

zzy-project-cli,提供多个框架的脚手架

npm地址 install npm install zzy-project-cli -g做什么&#xff1f; 将多个可选的框架提供给使用者选择&#xff0c;选中后自动下载对应模板&#xff0c;快捷使用。 使用 step1 zzy-cli create [项目名称]step2 获取模板之后选取任一进行下载 下载完成之后即可使用 模…

藏在超级应用背后的逻辑和哲学

众所周知&#xff0c;Elon Musk 想将 Twitter 重新设计定位成一款“超级应用 - X”的野心已经不再是秘密。伴随着应用商店中 Twitter 标志性的蓝鸟 Logo 被 X 取代后&#xff0c;赛博世界充满了对这件事情各种角度的探讨与分析。 Musk 曾经无数次通过微信这一样本来推广他的“超…

龙芯3A3000源码编译安装deepin-ide

安装环境 系统为统领专业版1050 CPU为龙芯3A3000 安装步骤 1.安装所有依赖库 sudo apt-get install git debhelper cmake qt5-qmake qtbase5-dev qttools5-dev qttools5-dev-tools lxqt-build-tools libssl-dev llvm llvm-dev libclang-dev libutf8proc-dev libmicrohttpd-d…

利用MixProxy自动录制生成Pytest案例:轻松实现测试脚本编写!

前言 进行接口自动化时&#xff0c;有时候往往没有接口文档&#xff0c;或者文档更新并不及时&#xff0c;此时&#xff0c;想要获取相关接口&#xff0c;通过抓包是一种快速便捷的手段。抓包获取到接口后&#xff0c;开始写接口用例&#xff0c;此时需要复制请求url、请求参数…

人工智能驱动的个性化学习:技术如何彻底改变教育

随着计算机辅助教学的出现&#xff0c;人工智能在教育领域的发展始于20世纪50年代。然而&#xff0c;在20世纪90年代&#xff0c;由于机器学习和数据处理的进步&#xff0c;该领域开始出现大幅增长。人工智能在教育领域的早期应用之一是智能辅导系统&#xff08;ITS&#xff09…

最新最全网络安全专业毕业设计选题精华汇总-持续更新中

文章目录 0 前言1 网络安全(信息安全)毕设选题推荐2 开题指导3 最后 0 前言 Hi&#xff0c;大家好&#xff0c;随着毕业季的临近&#xff0c;许多同学开始向学长咨询关于选题和开题的问题。在这里&#xff0c;学长分享一些关于网络安全(信息安全)毕业设计选题的内容。 以下为…

2023人工智能全景报告《State of AI Report》出炉!AI未来一年的10大预测:GPT-4仍是全球最强,GenAI 大爆发,...

文章目录 2023 人工智能全景报告《State of AI Report》出炉&#xff01;给出AI未来一年的10大预测&#xff0c;GPT-4仍是全球最强&#xff0c;GenAI 大爆发&#xff0c;...1. 研究进展1.1 GPT-4仍是全球最强1.2 闭源模型趋于技术封闭&#xff0c;开源模型紧追不舍1.3 小模型的…

日常中msvcr120.dll丢失怎么解决?有效的5个解决方法分享

在我日常的计算机维护和故障排除中&#xff0c;我经常会遇到一些常见的问题&#xff0c;其中之一就是“msvcr120.dll丢失”。这是一个非常常见的错误&#xff0c;通常出现在运行某些程序或游戏时。这个问题可能会对用户的电脑操作造成不便&#xff0c;甚至导致一些重要的应用程…

风力发电场安科瑞集中监控系统解决方案

安科瑞 崔丽洁 风力发电场集中监控系统解决方案 作为清洁能源之一&#xff0c;风力发电场近几年装机容量快速增长。8月17日&#xff0c;国家能源局发布1-7月份全国电力工业统计数据。截至7月底&#xff0c;全国累计发电装机容量约27.4亿千瓦&#xff0c;同比增长11.5%。其中&am…

1024程序员节特辑 | ELK+ 用户画像构建个性化推荐引擎,智能实现“千人千面”

专栏集锦&#xff0c;赶紧收藏以备不时之需 Spring Cloud实战专栏&#xff1a;https://blog.csdn.net/superdangbo/category_9270827.html Python 实战专栏&#xff1a;https://blog.csdn.net/superdangbo/category_9271194.html Logback 详解专栏&#xff1a;https://blog.…

Mac苹果电脑开不了机怎么办,该怎么修复

台式机Mac或MacBook无法打开&#xff0c;或者可能无法通过Apple图标启动&#xff1f;不用担心&#xff0c;虽然会让人烦躁不安&#xff0c;但通常是可以修复的。 以下就是重新启动Mac所需的所有步骤。只需按顺序进行操作即可&#xff0c;除非操作系统更新失败后Mac无法启动。在…