Skip to content

Latest commit

History

43 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

LockTableView

自定义表格,可锁定双向表头,自适应列宽,自适应行高,下拉刷新,上拉加载,快速集成

效果展示

image

工程集成说明

  • 第一步
//在工程gradle文件里allprojects {
repositories {
.......
maven { url'https://jitpack.io' }
......
}
}
//如果不在工程gradle文件里加入,也可以加入模块gradle文件中repositories {
maven {
url"https://jitpack.io"
}
}
  • 第二步
dependencies {
compile'com.github.RmondJone:LockTableView:1.1.2'
}

API使用说明

finalLockTableViewmLockTableView = newLockTableView(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) //单元格字体大小
.setCellPadding(15)//设置单元格内边距(dp)
.setFristRowBackGroudColor(R.color.table_head)//表头背景色
.setTableHeadTextColor(R.color.beijin)//表头字体颜色
.setTableContentTextColor(R.color.border_color)//单元格字体颜色
.setNullableString("N/A") //空值替换值
.setTableViewListener(newLockTableView.OnTableViewListener() {
//设置横向滚动监听@OverridepublicvoidonTableViewScrollChange(intx, inty) {
Log.e("滚动值","["+x+"]"+"["+y+"]");
}
})
.setTableViewRangeListener(newLockTableView.OnTableViewRangeListener() {
//设置横向滚动边界监听@OverridepublicvoidonLeft(HorizontalScrollViewview) {
Log.e("滚动边界","滚动到最左边");
}
@OverridepublicvoidonRight(HorizontalScrollViewview) {
Log.e("滚动边界","滚动到最右边");
}
})
.setOnLoadingListener(newLockTableView.OnLoadingListener() {
//下拉刷新、上拉加载监听@OverridepublicvoidonRefresh(finalXRecyclerViewmXRecyclerView, finalArrayList<ArrayList<String>> mTableDatas) {
Log.e("表格主视图",mXRecyclerView);
Log.e("表格所有数据",mTableDatas);
//如需更新表格数据调用,部分刷新不会全部重绘mLockTableView.setTableDatas(mTableDatas);
//停止刷新mXRecyclerView.refreshComplete();
}
@OverridepublicvoidonLoadMore(finalXRecyclerViewmXRecyclerView, finalArrayList<ArrayList<String>> mTableDatas) {
Log.e("表格主视图",mXRecyclerView);
Log.e("表格所有数据",mTableDatas);
//如需更新表格数据调用,部分刷新不会全部重绘mLockTableView.setTableDatas(mTableDatas);
//停止刷新mXRecyclerView.loadMoreComplete();
//如果没有更多数据调用mXRecyclerView.setNoMore(true);
}
})
.setOnItemClickListenter(newLockTableView.OnItemClickListenter() {
@OverridepublicvoidonItemClick(Viewitem, intposition) {
Log.e("点击事件",position+"");
}
})
.setOnItemLongClickListenter(newLockTableView.OnItemLongClickListenter() {
@OverridepublicvoidonItemLongClick(Viewitem, intposition) {
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 表格数据 */publicLockTableView(ContextmContext, ViewGroupmContentView, ArrayList<ArrayList<String>> mTableDatas) {
this.mContext = mContext;
this.mContentView = mContentView;
this.mTableDatas = mTableDatas;
initAttrs();
}

目前支持可自定义属性

/** * 是否锁定首行 */privatebooleanisLockFristRow = true;
/** * 是否锁定首列 */privatebooleanisLockFristColumn = true;
/** * 最大列宽(dp) */privateintmaxColumnWidth;
/** * 最小列宽(dp) */privateintminColumnWidth;
/** * 最大行高(dp) */privateintmaxRowHeight;
/** * 最小行高dp) */privateintminRowHeight;
/** * 第一行背景颜色 */privateintmFristRowBackGroudColor;
/** * 数据为空时的缺省值 */privateStringmNullableString;
/** * 单元格字体大小 */privateintmTextViewSize;
/** * 表格头部字体颜色 */privateintmTableHeadTextColor;
/** * 表格内容字体颜色 */privateintmTableContentTextColor;
/** * 表格横向滚动监听事件 */privateOnTableViewListenermTableViewListener;
/** * 表格横向滚动到边界监听事件 */privateOnTableViewRangeListenermTableViewRangeListener;
/** * 表格上拉刷新、下拉加载监听事件 */privateOnLoadingListenermOnLoadingListener;
/** * Item点击事件 */privateOnItemClickListentermOnItemClickListenter;
/** * Item长按事件 */privateOnItemLongClickListentermOnItemLongClickListenter;
/** * Item选中颜色 */privateintmOnItemSeletor;
/** * 单元格内边距 */privateintmCellPadding;

问题反馈

  • 技术交流群:QQ(264587303)
  • Demo作者:郭翰林
  • 注:有定制化需求自己下源码根据自己的需求改动,不要指望别人给你实现,这样永远没有成长!
  • 本控件实现没有难度,只要静心看代码都能看的懂。我只提供最基础的功能,尽量满足大部分的开发需求。
  • 此项目由于个人原因,已停止维护!望大家见谅!希望有更多热心人士可以Fork此项目进行改造升级!

License

Copyright (c) 2018GuohanlinPermissionisherebygranted, freeofcharge, toanypersonobtainingacopyofthissoftwareandassociateddocumentationfiles (the"Software"), todealintheSoftwarewithoutrestriction, includingwithoutlimitationtherightstouse, copy, modify, merge, publish, distribute, sublicense, and/orsellcopiesoftheSoftware, andtopermitpersonstowhomtheSoftwareisfurnishedtodoso, subjecttothefollowingconditions:
TheabovecopyrightnoticeandthispermissionnoticeshallbeincludedinallcopiesorsubstantialportionsoftheSoftware.
THESOFTWAREISPROVIDED"AS IS", WITHOUTWARRANTYOFANYKIND, EXPRESSORIMPLIED, INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY,
FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT. INNOEVENTSHALLTHEAUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM, DAMAGESOROTHERLIABILITY, WHETHERINANACTIONOFCONTRACT, TORTOROTHERWISE, ARISINGFROM,
OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHERDEALINGSINTHESOFTWARE.

About

Android自定义表格,支持锁双向表头,自适应列宽,自适应行高,快速集成。Android custom table, support two-way lock header, adaptive column width, adaptive line width, rapid integration.

Topics

Resources

Stars

595 stars

Watchers

18 watching

Forks

Releases

Packages

Contributors

Languages