RmondJone / LockTableView

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

lockTableView.setTableDatas()后可能出现列宽不对齐的现象(有图) #18

Open JiangShuLiang opened 5 years ago

JiangShuLiang commented 5 years ago

表格数据是通过分页请求接口填充的,现象如图

微信截图_20190627092224

1397195360 commented 5 years ago

你创建表格后,首行的宽度固定下来了,之后加载数据是局部刷新的,就会导致错位。我这边解决办法是用 setColumnWidth(int mColumnNum, int mColumnWidth) 固定下每一列的宽度,或者你可以每次获取到数据后重新刷新或创建表格

JiangShuLiang commented 5 years ago

你创建表格后,首行的宽度固定下来了,之后加载数据是局部刷新的,就会导致错位。我这边解决办法是用 setColumnWidth(int mColumnNum, int mColumnWidth) 固定下每一列的宽度,或者你可以每次获取到数据后重新刷新或创建表格

你说的这个原因我之前也发现了。你说的两种解决方案我也都有考虑过,但:1.每列都固定有点麻烦,最终展现出的效果也可能会不太美观;2.如果重新创建表格的话,就又要滚回到第一行从头看了,不能从第一页的最后一条开始往下看,会有点破坏上拉加载更多的使用体验唉。我是有发emial给作者,但一直没收到回复,他应该是不打算再维护这个项目了,T_T

1397195360 commented 5 years ago

你创建表格后,首行的宽度固定下来了,之后加载数据是局部刷新的,就会导致错位。我这边解决办法是用setColumnWidth(int mColumnNum, int mColumnWidth)固定下每一列的宽度,或者你可以每次获取到数据后重新刷新或创建表格

你说的这个原因我之前也发现了。你说的两种解决方案我也都有考虑过,但:1.每列都固定有点麻烦,最终展现出的效果也可能会不太美观;2.如果重新创建表格的话,就又要滚回到第一行从头看了,不能从第一页的最后一条开始往下看,会有点破坏上拉加载更多的使用体验唉。我是有发emial给作者,但一直没收到回复,他应该是不打算再维护这个项目了,T_T

或者你可以试试找找有没其他库,我是用固定每一列的宽度来实现的,虽然现在也比较少用这个功能了

KafuuNeko commented 4 years ago

我解决了 LockTableView.java

` package com.rmondjone.locktableview; import android.content.Context; import android.support.v4.content.ContextCompat; import android.support.v7.widget.LinearLayoutManager; import android.text.Layout; import android.text.StaticLayout; import android.text.TextPaint; import android.util.Log; import android.util.TypedValue; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.HorizontalScrollView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import com.rmondjone.xrecyclerview.ProgressStyle; import com.rmondjone.xrecyclerview.XRecyclerView; import java.util.ArrayList; import java.util.HashMap; import java.util.List; /**

KafuuNeko commented 4 years ago

解决思路就是记录head所有的TextView,然后在initData里动态调整宽度就好了