Android自定义表格,支持锁双向表头,自适应列宽,自适应行高,快速集成。
2018-05-18 18:01
811 查看
https://github.com/RmondJone/LockTableView
工程集成说明
- 第一步
//在工程gradle文件里 allprojects { repositories { ....... maven { url 'https://jitpack.io' } ...... } }
//如果不在工程gradle文件里加入,也可以加入模块gradle文件中 repositories { maven { url "https://jitpack.io" } }
- 第二步
dependencies { compile 'com.github.RmondJone:LockTableView:1.1.1' }
API使用说明
final LockTableView mLockTableView = new LockTableView(this, mContentView, mTableDatas); Log.e("表格加载开始", "当前线程:" + Thread.currentThread()); mLockTableView.setLockFristColumn(true) //是否锁定第一列 .setLockFristRow(true) //是否锁定第一行 .setMaxColumnWidth(100) //列最大宽度 .setMinColumnWidth(60) //列最小宽度 .setColumnWidth(1,60) //设置指定列文本宽度(从0开始计算,宽度单位dp) .setMinRowHeight(20)//行最小高度 .setMaxRowHeight(60)//行最大高度 .setTextViewSize(16) //单元格字体大小 .setFristRowBackGroudColor(R.color.table_head)//表头背景色 .setTableHeadTextColor(R.color.beijin)//表头字体颜色 .setTableContentTextColor(R.color.border_color)//单元格字体颜色 .setNullableString("N/A") //空值替换值 .setTableViewListener(new LockTableView.OnTableViewListener() { //设置横向滚动监听 @Override public void onTableViewScrollChange(int x, int y) { Log.e("滚动值","["+x+"]"+"["+y+"]"); } }) .setTableViewRangeListener(new LockTableView.OnTableViewRangeListener() { //设置横向滚动边界监听 @Override public void onLeft(HorizontalScrollView view) { Log.e("滚动边界","滚动到最左边"); } @Override public void onRight(HorizontalScrollView view) { Log.e("滚动边界","滚动到最右边"); } }) .setOnLoadingListener(new LockTableView.OnLoadingListener() { //下拉刷新、上拉加载监听 @Override public void onRefresh(final XRecyclerView mXRecyclerView, final ArrayList<ArrayList<String>> mTableDatas) { Log.e("表格主视图",mXRecyclerView); Log.e("表格所有数据",mTableDatas); //如需更新表格数据调用,部分刷新不会全部重绘 mLockTableView.setTableDatas(mTableDatas); //停止刷新 mXRecyclerView.refreshComplete(); } @Override public void onLoadMore(final XRecyclerView mXRecyclerView, final ArrayList<ArrayList<String>> mTableDatas) { Log.e("表格主视图",mXRecyclerView); Log.e("表格所有数据",mTableDatas); //如需更新表格数据调用,部分刷新不会全部重绘 mLockTableView.setTableDatas(mTableDatas); //停止刷新 mXRecyclerView.loadMoreComplete(); //如果没有更多数据调用 mXRecyclerView.setNoMore(true); } }) .setOnItemClickListenter(new LockTableView.OnItemClickListenter() { @Override public void onItemClick(View item, int position) { Log.e("点击事件",position+""); } }) .setOnItemLongClickListenter(new LockTableView.OnItemLongClickListenter() { @Override public void onItemLongClick(View item, int position) { Log.e("长按事件",position+""); } }) .setOnItemSeletor(R.color.dashline_color)//设置Item被选中颜色 .show(); //显示表格,此方法必须调用 mLockTableView.getTableScrollView().setPullRefreshEnabled(true); mLockTableView.getTableScrollView().setLoadingMoreEnabled(true); mLockTableView.getTableScrollView().setRefreshProgressStyle(ProgressStyle.SquareSpin); //属性值获取 Log.e("每列最大宽度(dp)", mLockTableView.getColumnMaxWidths().toString()); Log.e("每行最大高度(dp)", mLockTableView.getRowMaxHeights().toString()); Log.e("表格所有的滚动视图", mLockTableView.getScrollViews().toString()); Log.e("表格头部固定视图(锁列)", mLockTableView.getLockHeadView().toString()); Log.e("表格头部固定视图(不锁列)", mLockTableView.getUnLockHeadView().toString()); /** * 构造方法 * * @param mContext 上下文 * @param mContentView 表格父视图 * @param mTableDatas 表格数据 */ public LockTableView(Context mContext, ViewGroup mContentView, ArrayList<ArrayList<String>> mTableDatas) { this.mContext = mContext; this.mContentView = mContentView; this.mTableDatas = mTableDatas; initAttrs(); }
目前支持可自定义属性
/** * 是否锁定首行 */ private boolean isLockFristRow = true; /** * 是否锁定首列 */ private boolean isLockFristColumn = true; /** * 最大列宽(dp) */ private int maxColumnWidth; /** * 最小列宽(dp) */ private int minColumnWidth; /** * 最大行高(dp) */ private int maxRowHeight; /** * 最小行高dp) */ private int minRowHeight; /** * 第一行背景颜色 */ private int mFristRowBackGroudColor; /** * 数据为空时的缺省值 */ private String mNullableString; /** * 单元格字体大小 */ private int mTextViewSize; /** * 表格头部字体颜色 */ private int mTableHeadTextColor; /** * 表格内容字体颜色 */ private int mTableContentTextColor; /** * 表格横向滚动监听事件 */ private OnTableViewListener mTableViewListener; /** * 表格横向滚动到边界监听事件 */ private OnTableViewRangeListener mTableViewRangeListener; /** * 表格上拉刷新、下拉加载监听事件 */ private OnLoadingListener mOnLoadingListener; /** * Item点击事件 */ private OnItemClickListenter mOnItemClickListenter; /** * Item长按事件 */ private OnItemLongClickListenter mOnItemLongClickListenter; /** * Item选中颜色 */ private int mOnItemSeletor; /** * 要改变的列集合 */ private HashMap<Integer, Integer> mChangeColumns = new HashMap<>();
阅读更多
相关文章推荐
- Android 自定义支持快速搜索筛选的选择控件
- 可支持快速搜索筛选的Android自定义选择控件
- 好用的自适应表格插件-bootstrap table (支持固定表头)
- Android快速开发框架Android_BaseLib,集成了常用工具类,自定义View控件,Base基类封装,常用开源框架
- Android自定义View之双表头表格(表头不动,EditView和TextView两种方式)
- 【Android】快速开发偷懒必备,一句话搞定所有ViewGroup的Adapter . 支持自定义ViewGroup
- Android 低版本GridLayout怎样行高列宽自适应
- Android平台快速集成当下流行平台分享
- Android双列滑动表格(双表头不动)
- android 自适应 多屏幕支持 .
- 快速搭建Android开发环境(支持win7,win8系统)
- android 自适应 多屏幕支持 --Android多分辨率适配
- Android 自定义imageview 图片高度固定大小宽度按比例自适应
- 【实战】快速集成自定义转场动画&手势驱动
- Android中使用ListView绘制自定义表格技巧分享
- Java现实自定义表格标签(支持排序,分页,汇总,滚动,多行列)
- android集成百度地图SDK 自定义keystore无法编译 Keystore was tampered with, or password was incorrect的解决方法
- 如何快速向android gridview表格中填充数据
- Android 首字母分组快速索引 自定义WaveSiderBarView
- 支持群聊+语音聊天+高仿QQ源码下载 (android前端+JAVA后台+spark<windows版聊天>)方便集成到自己系统