From 812eef08f33fe5948412115f20f5e5f402a5f4e5 Mon Sep 17 00:00:00 2001 From: zhengsr <845731923@qq.com> Date: Wed, 29 Mar 2023 11:48:19 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E5=A4=84=E7=90=86=20LabelFlowlayout=20?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=20Header=EF=BC=8C=E5=A6=82=E6=9E=9C=E5=88=9A?= =?UTF-8?q?=E5=A5=BD=E6=8D=A2=E8=A1=8C=EF=BC=8Cheader=20=E4=B8=8D=E8=B5=B7?= =?UTF-8?q?=E4=BD=9C=E7=94=A8=E7=9A=84=E9=97=AE=E9=A2=98=202.=20LabelActiv?= =?UTF-8?q?ity=20=E8=B0=83=E7=94=A8=20notifyDataChanged=20=E4=B8=8D?= =?UTF-8?q?=E8=83=BD=E9=80=89=E4=B8=AD=E7=AC=AC=E4=B8=80=E4=B8=AA=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tablib/view/flow/LabelFlowLayout.java | 1 + .../tablib/view/flow/base/FlowLayout.java | 34 +++++++++++++++---- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/tablibx/src/main/java/com/zhengsr/tablib/view/flow/LabelFlowLayout.java b/tablibx/src/main/java/com/zhengsr/tablib/view/flow/LabelFlowLayout.java index 652b1d4..94bf6ee 100644 --- a/tablibx/src/main/java/com/zhengsr/tablib/view/flow/LabelFlowLayout.java +++ b/tablibx/src/main/java/com/zhengsr/tablib/view/flow/LabelFlowLayout.java @@ -264,6 +264,7 @@ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { * 更新数据 */ private void notifyData() { + mLastPosition = -1; removeAllViews(); int childCount = mAdapter.getItemCount(); for (int i = 0; i < childCount; i++) { diff --git a/tablibx/src/main/java/com/zhengsr/tablib/view/flow/base/FlowLayout.java b/tablibx/src/main/java/com/zhengsr/tablib/view/flow/base/FlowLayout.java index d39a6f0..27b682b 100644 --- a/tablibx/src/main/java/com/zhengsr/tablib/view/flow/base/FlowLayout.java +++ b/tablibx/src/main/java/com/zhengsr/tablib/view/flow/base/FlowLayout.java @@ -289,6 +289,13 @@ private void measureVertical(int widthMeasureSpec, int heightMeasureSpec) { //重置为下一个child 的宽度 lineWidth = cWidth; lineHeight = cHeight; + if (isHeader){ + height = processHeaderView(height,lineHeight,lineViews); + lineViews = new ArrayList<>(); + //重置为下一个child 的宽度 + lineWidth = 0; + lineHeight = 0; + } /** * 是否设置了显示行数 @@ -305,10 +312,8 @@ private void measureVertical(int widthMeasureSpec, int heightMeasureSpec) { if (isHeader) { //查看上一个 if (i > 0 && getChildAt(i - 1) != null) { - //// 如果当前子视图是头部视图,并且上一个子视图不为空,则另起一行 - height += lineHeight; - mLineHeights.add(lineHeight); - mAllViews.add(lineViews); + // 如果当前子视图是头部视图,并且上一个子视图不为空,则另起一行 + height = processHeaderView(height,lineHeight,lineViews); lineViews = new ArrayList<>(); //重置为下一个child 的宽度 lineWidth = 0; @@ -322,13 +327,20 @@ private void measureVertical(int widthMeasureSpec, int heightMeasureSpec) { if (isHeader) { //换行 - height += lineHeight; - mLineHeights.add(lineHeight); - mAllViews.add(lineViews); + height = processHeaderView(height,lineHeight,lineViews); lineViews = new ArrayList<>(); //重置为下一个child 的宽度 lineWidth = 0; lineHeight = 0; + /** + * 是否设置了显示行数 + */ + if (mLabelLines != -1 && mLineHeights.size() >= mLabelLines) { + isLabelMoreLine = true; + break; + } else { + isLabelMoreLine = false; + } } @@ -357,6 +369,14 @@ private void measureVertical(int widthMeasureSpec, int heightMeasureSpec) { setMeasuredDimension(widthSize, height); } + private int processHeaderView(int height,int lineHeight,List lineViews){ + //换行 + height += lineHeight; + mLineHeights.add(lineHeight); + mAllViews.add(lineViews); + return height; + } + @Override protected void onLayout(boolean changed, int l, int t, int r, int b) {