基于FLOWLAYOUT的改造,支持每行最大个数和每行元素高度居中。
来源:互联网 发布:apple pencil配套软件 编辑:程序博客网 时间:2024/06/08 18:03
需求
产品要求做一个控件,当元素个数超过4个的时候自动换行。然后界面中每个元素都是高度居中的,每个元素有固定的间距。
FLOWLAYOUT
参考了
http://blog.csdn.net/lmj623565791/article/details/38352503/
本文也是基于着部分代码进行了定制。
固定元素个数换行
if ((lineUsed + spaceWidth > widthSize) || (lineCount > nums))
在onMeasure和onLayout换行判断的时候,计算当前行的元素个数,当当前行的元素个数大于设定值的时候同lineUsed + spaceWidth > widthSize,元素位置不足时换行的逻辑。
单个元素高度居中
每行的元素高度可能各不相同,原先的代码中通过
if (spaceHeight > lineHeight) { lineHeight = spaceHeight; }
计算每行元素的最大高度,目前采用的方案是在onMeasure时记录每行的最大高度。
lineHeightList.add(lineHeight);
在onLayout计算高度偏移位置,放置对应的元素,具体的代码如下:
int gap = 0; if (null != lineHeightList.get(lineCount)) { int lineMaxHeight = lineHeightList.get(lineCount); if (CENTER == gravity) gap = (lineMaxHeight - bottom + top + 1) / 2; if (BOTTOM == gravity) gap = lineMaxHeight - bottom + top; } if (gap < 0) gap = 0; child.layout(left, top + gap, right, bottom + gap);
阅读全文
0 0
- 基于FLOWLAYOUT的改造,支持每行最大个数和每行元素高度居中。
- 每行指定元素个数进行输出
- IOS 自定义每行高度不同的UITableView
- 如何规定每行输出的个数
- 修改contentLabel 的高度 返回每行cell的高度
- 控制每行输出n个数
- 用内存申请实现动态二维数组的创建及打印(每行的元素个数不同)
- dojo中的dgrid注意事项,每行的高度问题
- SQL Server超过了每行的最大字节数(8060)的原因和解决办法
- SQL Server 超过了每行的最大字节数(8060)的原因和解决办法(转)
- SQL Server超过了每行的最大字节数(8060)的原因和解决办法
- SQL Server超过了每行的最大字节数(8060)的原因和解决办法
- sql Server超过了每行的最大字节数(8060)的原因和解决办法
- liux文件的每行末尾^M$ 和$
- TextView换行居中,每行居中显示
- [原创]定义每行每列显示的个数
- 修改magento产品列表页每行显示的产品个数
- 如何读取文件中每行个数不定的int数值
- 删除数值中指定元素
- CanvasJS动态折线图
- XLog
- tracert使用
- Qt下汉字转拼音,包含二级汉字
- 基于FLOWLAYOUT的改造,支持每行最大个数和每行元素高度居中。
- Erlang相关Appups/热更介绍及坑点
- mongodb聚合
- WindowManager.LayoutParams.type属性
- Nginx初探
- 超连接提交表单数据
- 将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有图有真相)
- ubuntu安装及使用wine
- Java学习笔记(一)