【Android -- 开源库】表格 SmartTable 的基本使用

news2024/9/28 23:32:27

介绍

1. 功能

  1. 快速配置自动生成表格;
  2. 自动计算表格宽高;
  3. 表格列标题组合;
  4. 表格固定左序列、顶部序列、第一行、列标题、统计行;
  5. 自动统计,排序(自定义统计规则);
  6. 表格图文、序列号、列标题格式化;
  7. 表格各组成背景、文字、网格、padding等配置;
  8. 表格批注;
  9. 表格内容、列标题点击事件;
  10. 缩放模式和滚动模式;
  11. 注解模式;
  12. 内容多行显示;
  13. 分页模式;
  14. 首尾动态添加数据;
  15. 丰富的格式化;
  16. 支持二维数组展示(用于类似日程表,电影选票等);
  17. 导入excel(支持颜色,字体,背景,批注,对齐,图片等基本Excel属性);
  18. 表格合并单元(支持注解合并,支持自动合并);
  19. 支持其他刷新框架SmartRefreshLayout;
  20. 可配置表格最小宽度(小于该宽度自动适配);
  21. 支持直接List或数组字段转列;
  22. 支持Json数据直接转换成表格;
  23. 支持表格网格指定行列显示;
  24. 支持自动生成表单。

Android 自动生成表格框架,GitHub 地址: SmartTable

2. 基本方法

Column 类的常用方法

  • setAutoCount(boolean isAutoCount):设置自动排序(默认升序)
  • isReverseSort:是否是反序排列
  • setComparator:设置排序比较
  • setCountFormat:统计格式化
  • OnColumnItemClickListener:列内容点击事件
  • setFixed:滑动到表格左边时固定列
  • setTextAlign:设置开启自动合并
  • setMaxMergeCount:设置开启最大数量
  • setDrawFormat:设置绘制样式格式化
  • setFormat:设置文字格式化

TableData 类常用方法

  • setSortColumn:设置排序列
  • settitleDrawFormat:设置列标题格式化
  • setXSequenceFormat:设置顶部序列号格式化
  • setYSequenceFormat:设置左边序列号格式化
  • setShowCount:设置是否显示统计
  • setTitleDrawFormat:设置列标题绘制格式化
  • setXSequenceFormat: 设置 X 序号行文字格式化
  • setYSequenceFormat : 设置 Y 序号行文字格式化
  • setUserCellRange(List userCellRange) :设置添加自定义合并规则

TableConfig 类常用方法

  • setContentStyle :设置内容文字样式
  • setYSequenceStyle :设置左边序列文字样式
  • setXSequenceStyle :设置顶部序列文字样式
  • setColumnTitleStyle :设置列标题文字样式
  • setTableTitleStyle :设置表格标题文字样式
  • setCountStyle :设置统计行样式
  • setColumnTitleGridStyle :设置列标题网格样式
  • setGridStyle :设置内容网格样式
  • setVerticalPadding :设置网格列 padding
  • setHorizontalPadding :设置网格行 padding
  • setYSequenceBackgroundColor :设置左序列背景
  • setXSequenceBackgroundColor :设置横序行背景
  • setColumnTitleBackgroundColor :设置列标题背景
  • setContentBackgroundColor :设置内容背景
  • setCountBackgroundColor :设置统计行背景
  • setFixedYSequence :固定左侧
  • setFixedXSequence :固定顶部
  • setFixedTitle :固定列标题
  • setFixedCountRow :固定统计行
  • setColumnTitleVerticalPadding :列标题上下 padding
  • setColumnTitleHorizontalPadding :增加列标题左右 padding
  • setSequenceGridStyle :序列网格样式
  • columnTitleGridStyle :列标题网格样式
  • setShowXSequence :设置是否显示顶部序号列
  • setShowYSequence :设置是否显示左侧序号列
  • setShowTableTitle :设置是否显示表格标题
  • isShowColumnTitle :设置是否显示列标题
  • setMinTableWidth :设置表格最小宽度

SmartTable 类的常用方法

  • setOnColumnClickListener :设置列标题点击事件
  • setSortColumn :设置排序列
  • setZoom(boolean zoom,float maxZoom,float minZoom) :设置是否开启缩放
  • addData(List t, boolean isFoot) :添加新数据
  • setSelectFormat :设置选中 Cell 样式
  • notifyDataChanged :重新计算布局

使用

0. 效果图

在这里插入图片描述

1. 前期准备

1. 在项目 build.gradle 添加 JitPack repository :

repositories {
        ...
        maven { url 'https://www.jitpack.io' }
    }

2. 在 app/build.gradle 添加如下依赖库:

implementation 'com.github.huangyanbin:SmartTable:2.2.0'

2. 使用

1. 在布局文件中使用

<com.bin.david.form.core.SmartTable
        android:id="@+id/table"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>

2. 通过注解的方式模拟数据

@SmartTable(name = "销售计划表")
public class UserInfo {
    //    name:版块名称,count:目标值,restaurant:餐饮数量,ka:KA数量,wholesale:流通批发数量,industry:工业加工数量,other:其它数量
    @SmartColumn(id = 0, name = "部门/渠道", autoMerge = true)
    private String city;
    @SmartColumn(id = 1, name = "板块")
    private int name;
    @SmartColumn(id = 2, name = "目标值")
    private int count;
    @SmartColumn(id = 3, name = "餐饮")
    private int restaurant;
    @SmartColumn(id = 4, name = "KA")
    private int ka;
    @SmartColumn(id = 5, name = "流通批发")
    private int wholesale;
    @SmartColumn(id = 6, name = "工业加工")
    private int industry;
    @SmartColumn(id = 7, name = "其他")
    private int other;

    public UserInfo(String city, int name, int count, int restaurant, int ka, int wholesale, int industry, int other) {
        this.city = city;
        this.name = name;
        this.count = count;
        this.restaurant = restaurant;
        this.ka = ka;
        this.wholesale = wholesale;
        this.industry = industry;
        this.other = other;
    }
}

3. 使用

public class TableActivity extends AppCompatActivity {
    private SmartTable table;

    private List<UserInfo> list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_table);

        initData();

        table = findViewById(R.id.table);

        table.setData(list);

        table.getConfig().setContentStyle(new FontStyle(50, Color.BLUE));
    }

    private void initData() {
        list = new ArrayList<>();
        list.add(new UserInfo("沈阳",100, 150, 50, 240, 1100, 450, 23458));
        list.add(new UserInfo("沈阳",100, 150, 50, 240, 1100, 450, 23458));
        list.add(new UserInfo("沈阳",100, 150, 50, 240, 1100, 450, 23458));
        list.add(new UserInfo("沈阳",100, 150, 50, 240, 1100, 450, 23458));
        list.add(new UserInfo("乌鲁木齐",100, 150, 50, 240, 1100, 450, 23458));
        list.add(new UserInfo("乌鲁木齐",100, 150, 50, 240, 1100, 450, 23458));
        list.add(new UserInfo("乌鲁木齐",100, 150, 50, 240, 1100, 450, 23458));
        list.add(new UserInfo("乌鲁木齐",100, 150, 50, 240, 1100, 450, 23458));
        list.add(new UserInfo("沈阳",100, 150, 50, 240, 1100, 450, 23458));
        list.add(new UserInfo("沈阳",100, 150, 50, 240, 1100, 450, 23458));
        list.add(new UserInfo("沈阳",100, 150, 50, 240, 1100, 450, 23458));
        list.add(new UserInfo("沈阳",100, 150, 50, 240, 1100, 450, 23458));
    }
}

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

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

相关文章

第十四届蓝桥杯三月真题刷题训练——第 6 天

目录 第 1 题&#xff1a;星期计算 问题描述 运行限制 代码&#xff1a; 第 2 题&#xff1a;考勤刷卡 问题描述 输入格式 输出格式 样例输入 样例输出 评测用例规模与约定 运行限制 代码&#xff1a; 第 3 题&#xff1a;卡片 问题描述 输入格式 输出格式 样…

Flutter-Scaffold组件

在Flutter开发当中&#xff0c;我们可能会遇到以下的需求&#xff1a;实现页面组合使用&#xff0c;比如说有悬浮按钮、顶部菜单栏、左右抽屉侧边栏、底部导航栏等等效果。Scaffold组件可以帮我们实现上面需求说的效果。这篇博客主要分享容器组件的Scaffold组件的使用&#xff…

AI视频智能分析EasyCVR视频融合平台录像计划模块搜索框细节优化

EasyCVR支持海量视频汇聚管理&#xff0c;可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、智能分析等视频服务。在录像功能上&#xff0c;平台可支持&#xff1a; 根据业务场景自定义录像计划&#xff0c;可支持7*24H不间断录像&#xff0c;支持…

脑机接口科普0019——大脑的分区及功能

本文禁止转载&#xff01;&#xff01;&#xff01;&#xff01; 在前文脑机接口科普0018——前额叶切除手术_sgmcy的博客-CSDN博客科普中&#xff0c;有个这样的一张图&#xff1a; 这个图呢&#xff0c;把大脑划分为不同的区域&#xff0c;然后不同的区域代表不同的功能。 …

NLL loss(负对数似然损失)

NLL损失在NLP中含义 &#xff1a; 在自然语言处理中&#xff0c;通常用于分类任务&#xff0c;例如语言模型、情感分类等。NLL损失全称为Negative Log-Likelihood Loss&#xff0c;其含义是负对数似然损失。 在NLP任务中&#xff0c;我们通常将文本数据表示为一个序列&#x…

大数据是什么?学习后能找高薪工作么

大数据是什么&#xff0c;比较官方的定义是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合&#xff0c;是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。 简单来说&#xff0c;大数据就是结构化的…

Unity使用webSocket与服务器通信(二)——C#服务器端使用Fleck时的简单服用方法

C#服务端用到Fleck包&#xff0c;它包含哪些可用的回调函数&#xff0c;有哪些常用的api方法&#xff1f; 演示&#xff1a;服务端收到Unity用户发来的信息 1、Fleck服务器提供哪些回调函数 Fleck提供的回调函数有下面几种&#xff1a; //用户连入服务器时... Action OnOp…

如何在Windows 10中安装PostgreSQL 15

PostgreSQL是一个强大的开源对象关系数据库系统,经过35年的积极开发,在可靠性、功能健壮性和性能方面赢得了很高的声誉。 通过官方文档可以找到大量的信息来描述如何安装和使用PostgreSQL。开源社区为熟悉PostgreSQL、发现它的工作原理和寻找职业机会提供了许多有用的地方。…

APP违法违规收集使用个人信息合规评流程和范围

近期&#xff0c;工信部通报2023年第1批《侵害用户权益行为的APP通报》&#xff08;总第27批&#xff09;&#xff0c;共通报46款APP&#xff08;SDK&#xff09;&#xff0c;这些被责令限期整改的APP&#xff08;SDK&#xff09;&#xff0c;涉及的问题主要包括3个方面&#x…

Easy Deep Learning——卷积层

为什么需要卷积层&#xff0c;深度学习中的卷积是什么&#xff1f; 在介绍卷积之前&#xff0c;先引入一个场景 假设您在草地上漫步&#xff0c;手里拿着一个尺子&#xff0c;想要测量草地上某些物体的大小&#xff0c;比如一片叶子。但是叶子的形状各异&#xff0c;并且草地非…

【Unity3D小技巧】Unity3D中判断Animation以及Animator动画播放结束,以及动画播放结束之后执行函数

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 在日常开发中&#xff0c;可能会遇到要判断Animation或者Anima…

MySQL workbench数据表和数据结构

数据表和数据结构的关系 数据表 学号姓名位置26002351李晓丽126002589张明伟226003214李雪冬326002132汪涵426006541邱明罕526003654李丽6 怎样去描述上面的数据表&#xff0c;用【数据表结构】表示 表头字段名字段类型位数备注学号xuehao整数/字符8 姓名xingming字符4 座…

煤矿人员精确定位解决方案,维护作业人员生命安全

近日&#xff0c;应急管理部党委书记、部长王祥喜主持召开全国安全防范工作视频会议。会议强调&#xff0c;要深刻吸取内蒙古露天煤矿坍塌等重特大事故教训&#xff0c;举一反三全面排查整治重点行业领域重大安全隐患&#xff0c;坚决遏制重特大事故&#xff0c;切实维护人民群…

【数据结构·考研】后序线索二叉树

之前我们介绍了中序线索二叉树的构造、遍历、寻找前趋和寻找后继&#xff1b;先序线索二叉树的构造、遍历、寻找后继。先序线索二叉树无法解决寻找前趋的任务&#xff0c;中序线索二叉树既可以寻找前趋结点也可以寻找后继结点。 今天我们再来看一下后序线索二叉树的构造&#…

apt-get通过代理更新系统

apt-get通过代理更新系统1. 源由2. 需求3. 分析4. 步骤4.1 安装CCProxy4.2 配置CCProxy4.3 apt-get更新4.4 apt-get升级4.5 apt-get安装5. 补充资料 命令行设置代理6. 参考资料1. 源由 apt-get经典操作就是通过网络与服务器通信&#xff0c;下载相应的包来安装和更新软件。 这…

docker容器内安装gcc(trunk 最新版本)以及LLVM

1、docker内部只有wget以及git命令 项目需要&#xff0c;得更新docker容器中的gcc和LLVM版本但是由于没有预先安装apt、apt-get以及yum&#xff0c;导致很多安装过程就是鸡生蛋蛋生鸡反应。暂时没有找到合适的解决的方法&#xff0c;如果有大佬知道的话&#xff0c;欢迎留言哈…

ZeroTier实现内网穿透详细教程,无需公网IP,实现异地组网

ZeroTier实现内网穿透详细教程&#xff0c;无需公网IP&#xff0c;实现异地组网ZeroTier1.官网注册账号&#xff0c;创建自己的局域网段2.点击创建好的网络&#xff0c;进入设置界面进行设置3.下载客户端&#xff0c;安装客户端&#xff0c;然后连接到网络中4.加入网络成功后&a…

pocsuite3安装及使用

pocsuite3安装及使用简介项目地址环境配置及安装环境要求安装&#xff08;详情可以参考[https://pocsuite.org/](https://pocsuite.org/)&#xff09;使用方法运行模块加载目标参数&#xff1a;Console模式查看有哪些模块使用Telnet 弱密码模块这里以flask模板注入漏洞为例pocs…

阿里云短信验证

1.了解阿里云用户权限操作 需要通过个人账户获得 授权码&#xff08;id、密码&#xff09;&#xff0c;再通过这些信息获得服务 阿里云网址 &#xff1a;https://www.aliyun.com/ 1.登陆阿里云服务器2.进入个人账号然后点击 AccessKey 管理3.创建用户组4.添加用户组权限&…

SYSU程设c++(第三周) 对象类、类的成员、类与结构体的区别、类的静态成员

对象&类 类用于指定对象的形式&#xff0c;它包含数据的表示方法和用于处理数据的方法。 • 类中的数据和方法称为类的成员。 • 函数在一个类中也被称为类的成员。 定义一个类&#xff0c;其效果是定义一个数据类型的蓝图。它定义了类的对象包括了什么&#xff0c;以及可…