本篇文章为大家展示了Android中怎么通过自定义LayoutManager实现花式表格,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
TableView具有如下特点:
支持不规则表格同时支持横向和纵向滚动支持顶部和左侧悬浮基于RecyclerView,所以RecyclerView自定义子视图、高效回收、子视图多样性这些特点它都有没有多层RecyclerView嵌套,性能更棒
Github地址
使用
第一步 | 添加xml文件
<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".ui.fragment.table.TableFragment"> <com.orient.me.widget.rv.adapter.TableView android:id="@+id/tb" android:layout_width="match_parent" android:layout_height="match_parent"/></FrameLayout>
第二步 | 获取TableView
在展示代码之前,了解一下TableView中的主要函数:
这个setTitle(boolean isLeftOpen, boolean isTopOpen)
有什么作用呢?为了确保表格的每一个单元格的长度和宽度都一样(子视图可以在横纵方向上占有多个单元格),宽和高都使用两种方式:
设置具体的值,那么单元格的宽或者高的值就是具体的设置一行或者一列可以容纳的单元格数量
所以宽高各有两种,模式的数量 = 2 * 2,总共有:
代码:
// if use butterknife// or use findViewById@BindView(R.id.tb) TableView mTable;// 默认为 TableLayoutManager.MODE_A, 4, 8mTable.setModeAndValue(TableLayoutManager.MODE_A, 6, 8);
第三步 | 创建数据类
实现ICellItem
接口:
public class TableCell implements ICellItem { private String name; private String value; private int type; private int row; private int col; private int widthSpan; private int heightSpan; //... 省略构造函数和Get Set方法 @Override public int getRow() { return row; } @Override public int getCol() { return col; } @Override public int getWidthSpan() { return widthSpan; } @Override public int getHeightSpan() { return heightSpan; }}
第四步 | 设置适配器
private TableAdapter<TableCell> mAdapter;protected void initWidget(View root) { // 假设在这个方法中初始化 mTable.setAdapter(mAdapter = new TableAdapter<TableCell>(new ArrayList<>()) { @Override public int getItemLayout(TableCell tableCell, int pos) { // ... 返回子视图布局文件 // 支持多类型 return R.layout.table_cell_content_item; } @Override public BaseAdapter.ViewHolder<TableCell> onCreateViewHolder(View root, int itemType) { // itemType是子视图布局文件 // 根据布局返回具体的ViewHolder return new ContentHolder(root); } });}// 具体的ViewHolderclass ContentHolder extends BaseAdapter.ViewHolder<TableCell>{ TextView mContent; public ContentHolder(View itemView) { super(itemView); mContent = itemView.findViewById(R.id.tv_name); } @Override protected void onBind(TableCell tableCell) { mContent.setText(tableCell.getValue()); } }
第五步 | 重新测绘
如果TableView
使用的模式是Mode_A
、Mode_C
和Mode_D
,需要再重新测量:
mTable.post(() -> mTable.reMeasure());
上述内容就是Android中怎么通过自定义LayoutManager实现花式表格,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。