• Stars
    star
    583
  • Rank 76,663 (Top 2 %)
  • Language
    Java
  • Created over 7 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

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使用说明

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) //单元格字体大小
      .setCellPadding(15)//设置单元格内边距(dp)
      .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 int mCellPadding;

问题反馈

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

License

Copyright (c) 2018 Guohanlin

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

More Repositories

1

AndroidCamera

Android自定义相机
Java
219
star
2

ExcelView

IOS表格自定义视图,支持XIB布局,支持代码布局,支持锁双向表头。The IOS table custom view supports the XIB layout, supports the code layout, and supports the bidirectional header of the lock.
Objective-C
104
star
3

SpringDiaLog

自定义回弹广告栏,可以自定义内容视图。 Custom springback advertisement bar, you can customize content view
Java
38
star
4

ROG-Zephyrus-M15-Hackintosh-GU502LW

ROG 玩家国度 幻15(GU502LW)黑苹果 EFI配置文件
C++
21
star
5

WaterMarkImage

图片水印工具,可以直接直接添加水印遮罩图片,也可直接添加水印文字并自定义水印文字位置 Picture watermark tool, you can directly add watermarks, masks, pictures, you can also directly add watermark text, and customize the watermark text location
Java
12
star
6

i5-10600_H410TM-ITX_Hackintosh

I5 10600+H410TM-ITX黑苹果
11
star
7

JsonToAnyLanguage

Json字符串代码生成JetBrains插件
Java
11
star
8

react-native-locktable

Tables that can be locked in both directions on react native/一个在React Native上可以双向锁定的表格
Java
10
star
9

QuickTypeNode

QuickType NodeJS 应用
TypeScript
7
star
10

PicPngquant

工程批量压缩Python脚本
Python
7
star
11

YapiQuickType

IDEA Yapi QuickType插件,只需简单配置插件即可快速生成想要的实体
Kotlin
6
star
12

12400F_B660M-ITX-ac_5600XT_Hackintosh

12400F+B660M-ITX/ac+5600XT黑苹果 EFI
5
star
13

JsonToTypeScript

Json转TypeScript Class对象 WebStorm插件/Json to TypeScript Class object WebStorm plugin
Java
5
star
14

LockScreenDemo

Android自定义锁屏实现的一个Demo
Java
4
star
15

ASRock-B460M-ITX-ac-i5-10600

华擎B460M-ITX/ac + i5 10600 黑苹果
3
star
16

RmondJone.github.io

郭翰林的博客
HTML
2
star
17

Lenovo-Saviour14-i7-4720HQ

Lenovo 拯救者14 i7-4720HQ 黑苹果 EFI文件
2
star