From 96db8e5e289f3302769f6e7688bdc9fcc1f572fe Mon Sep 17 00:00:00 2001 From: demonyan <331018545@qq.com> Date: 2015年11月13日 14:46:44 +0800 Subject: [PATCH 01/17] Update for FlowLayout gravity attribute --- .../com/zhy/view/flowlayout/FlowLayout.java | 38 ++++++++++++++++++- flowlayout-lib/src/main/res/values/attrs.xml | 1 + .../src/main/res/values/strings.xml | 3 ++ .../src/main/res/layout/activity_main.xml | 3 +- .../src/main/res/layout/activity_main_sc.xml | 3 +- .../res/layout/fragment_single_choose.xml | 3 +- 6 files changed, 47 insertions(+), 4 deletions(-) diff --git a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/FlowLayout.java b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/FlowLayout.java index 52b2c9d..f05f587 100755 --- a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/FlowLayout.java +++ b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/FlowLayout.java @@ -1,6 +1,7 @@ package com.zhy.view.flowlayout; import android.content.Context; +import android.content.res.TypedArray; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; @@ -13,10 +14,16 @@ public class FlowLayout extends ViewGroup private static final String TAG = "FlowLayout"; protected List> mAllViews = new ArrayList>(); protected List mLineHeight = new ArrayList(); + private String mGravity; public FlowLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); + TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.TagFlowLayout); + mGravity = ta.getString(R.styleable.TagFlowLayout_gravity); + if (mGravity == null) + mGravity = getResources().getString(R.string.gravity_left); + ta.recycle(); } public FlowLayout(Context context, AttributeSet attrs) @@ -147,6 +154,7 @@ protected void onLayout(boolean changed, int l, int t, int r, int b) lineViews = mAllViews.get(i); lineHeight = mLineHeight.get(i); + left = getStartLeft(lineViews); for (int j = 0; j < lineViews.size(); j++) { View child = lineViews.get(j); @@ -168,12 +176,40 @@ protected void onLayout(boolean changed, int l, int t, int r, int b) left += child.getMeasuredWidth() + lp.leftMargin + lp.rightMargin; } - left = getPaddingLeft(); top += lineHeight; } } + private int getStartLeft(List lineViews) { + int left = getPaddingLeft(); + + int needWidth = 0; + for (int j = 0; j < lineViews.size(); j++) { + View child = lineViews.get(j); + if (child.getVisibility() == View.GONE) { + continue; + } + + MarginLayoutParams lp = (MarginLayoutParams) child + .getLayoutParams(); + needWidth += child.getMeasuredWidth() + lp.leftMargin + + lp.rightMargin; + } + + needWidth += getPaddingLeft() + getPaddingRight(); + if (mGravity.equals(getResources().getString(R.string.gravity_center))) { + if (getMeasuredWidth()> needWidth) { + left += (getMeasuredWidth() - needWidth) / 2; + } + } else if (mGravity.equals(getResources().getString(R.string.gravity_right))) { + if (getMeasuredWidth()> needWidth) { + left += getMeasuredWidth() - needWidth; + } + } + return left; + } + @Override public LayoutParams generateLayoutParams(AttributeSet attrs) { diff --git a/flowlayout-lib/src/main/res/values/attrs.xml b/flowlayout-lib/src/main/res/values/attrs.xml index 7c67693..f341836 100644 --- a/flowlayout-lib/src/main/res/values/attrs.xml +++ b/flowlayout-lib/src/main/res/values/attrs.xml @@ -3,5 +3,6 @@ + \ No newline at end of file diff --git a/flowlayout-lib/src/main/res/values/strings.xml b/flowlayout-lib/src/main/res/values/strings.xml index 8399546..66a05c9 100644 --- a/flowlayout-lib/src/main/res/values/strings.xml +++ b/flowlayout-lib/src/main/res/values/strings.xml @@ -1,3 +1,6 @@ flowlayout-lib + left + center + right diff --git a/flowlayout/src/main/res/layout/activity_main.xml b/flowlayout/src/main/res/layout/activity_main.xml index f13ce13..c5d99bc 100644 --- a/flowlayout/src/main/res/layout/activity_main.xml +++ b/flowlayout/src/main/res/layout/activity_main.xml @@ -8,8 +8,9 @@ android:id="@+id/id_flowlayout" android:layout_width="fill_parent" android:layout_height="wrap_content" + android:padding="20dp" zhy:max_select="-1" - android:padding="20dp" + zhy:gravity="@string/gravity_center" > diff --git a/flowlayout/src/main/res/layout/activity_main_sc.xml b/flowlayout/src/main/res/layout/activity_main_sc.xml index 6c74223..8886f4e 100644 --- a/flowlayout/src/main/res/layout/activity_main_sc.xml +++ b/flowlayout/src/main/res/layout/activity_main_sc.xml @@ -8,8 +8,9 @@ android:id="@+id/id_flowlayout" android:layout_width="fill_parent" android:layout_height="wrap_content" + android:padding="20dp" zhy:max_select="-1" - android:padding="20dp" + zhy:gravity="@string/gravity_center" > diff --git a/flowlayout/src/main/res/layout/fragment_single_choose.xml b/flowlayout/src/main/res/layout/fragment_single_choose.xml index e5c8eda..ab6bee8 100644 --- a/flowlayout/src/main/res/layout/fragment_single_choose.xml +++ b/flowlayout/src/main/res/layout/fragment_single_choose.xml @@ -8,8 +8,9 @@ android:id="@+id/id_flowlayout" android:layout_width="fill_parent" android:layout_height="wrap_content" + android:padding="20dp" + zhy:gravity="@string/gravity_center" zhy:max_select="1" - android:padding="20dp" > From 3dbac10a5b8ad9609abe1e163123690c949f4420 Mon Sep 17 00:00:00 2001 From: hongyangAndroid Date: Tue, 1 Dec 2015 20:04:15 +0800 Subject: [PATCH 02/17] fix issue #12 --- .idea/vcs.xml | 2 +- Github-FlowLayout.iml | 2 -- .../src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java | 3 ++- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 94a25f7..6564d52 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ -
    +
      \ No newline at end of file diff --git a/Github-FlowLayout.iml b/Github-FlowLayout.iml index 271dea0..86707db 100644 --- a/Github-FlowLayout.iml +++ b/Github-FlowLayout.iml @@ -9,8 +9,6 @@ - - diff --git a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java index b8b2bc8..1345c5e 100644 --- a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java +++ b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java @@ -105,6 +105,7 @@ public void setAdapter(TagAdapter adapter) // return; mTagAdapter = adapter; mTagAdapter.setOnDataChangedListener(this); + mSelectedView.clear(); changeAdapter(); } @@ -173,7 +174,7 @@ public boolean performClick() return mOnTagClickListener.onTagClick(child.getTagView(), pos, this); } } - return super.performClick(); + return true; } From a92cba8f074409c3f7252a1fc655947a6fd06430 Mon Sep 17 00:00:00 2001 From: hongyangAndroid Date: Tue, 1 Dec 2015 20:08:38 +0800 Subject: [PATCH 03/17] =?UTF-8?q?=E4=BF=AE=E6=94=B9demo=E4=B8=BA=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E5=B7=A6=E5=AF=B9=E9=BD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- flowlayout/src/main/res/layout/activity_main.xml | 1 - flowlayout/src/main/res/layout/activity_main_sc.xml | 1 - flowlayout/src/main/res/layout/fragment_single_choose.xml | 1 - 3 files changed, 3 deletions(-) diff --git a/flowlayout/src/main/res/layout/activity_main.xml b/flowlayout/src/main/res/layout/activity_main.xml index c5d99bc..63dde54 100644 --- a/flowlayout/src/main/res/layout/activity_main.xml +++ b/flowlayout/src/main/res/layout/activity_main.xml @@ -10,7 +10,6 @@ android:layout_height="wrap_content" android:padding="20dp" zhy:max_select="-1" - zhy:gravity="@string/gravity_center" > diff --git a/flowlayout/src/main/res/layout/activity_main_sc.xml b/flowlayout/src/main/res/layout/activity_main_sc.xml index 8886f4e..b5c16ce 100644 --- a/flowlayout/src/main/res/layout/activity_main_sc.xml +++ b/flowlayout/src/main/res/layout/activity_main_sc.xml @@ -10,7 +10,6 @@ android:layout_height="wrap_content" android:padding="20dp" zhy:max_select="-1" - zhy:gravity="@string/gravity_center" > diff --git a/flowlayout/src/main/res/layout/fragment_single_choose.xml b/flowlayout/src/main/res/layout/fragment_single_choose.xml index ab6bee8..7592c3e 100644 --- a/flowlayout/src/main/res/layout/fragment_single_choose.xml +++ b/flowlayout/src/main/res/layout/fragment_single_choose.xml @@ -9,7 +9,6 @@ android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="20dp" - zhy:gravity="@string/gravity_center" zhy:max_select="1" > From 0a876175e60a86542bc902822843b12a952555a5 Mon Sep 17 00:00:00 2001 From: CaMnter <421482590@qq.com> Date: 2015年12月25日 16:04:53 +0800 Subject: [PATCH 04/17] fix warning:Avoid object allocations during draw/layout operations(preallocate and reuse instead) --- .../src/main/java/com/zhy/view/flowlayout/FlowLayout.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/FlowLayout.java b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/FlowLayout.java index f05f587..14b5c81 100755 --- a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/FlowLayout.java +++ b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/FlowLayout.java @@ -15,6 +15,7 @@ public class FlowLayout extends ViewGroup protected List> mAllViews = new ArrayList>(); protected List mLineHeight = new ArrayList(); private String mGravity; + private List lineViews = new ArrayList(); public FlowLayout(Context context, AttributeSet attrs, int defStyle) { @@ -105,14 +106,13 @@ protected void onLayout(boolean changed, int l, int t, int r, int b) { mAllViews.clear(); mLineHeight.clear(); + lineViews.clear(); int width = getWidth(); int lineWidth = 0; int lineHeight = 0; - List lineViews = new ArrayList(); - int cCount = getChildCount(); for (int i = 0; i < cCount; i++) From f86a5a707b89553e229f03d06a168f86b1f777f3 Mon Sep 17 00:00:00 2001 From: CaMnter <421482590@qq.com> Date: 2015年12月25日 16:26:53 +0800 Subject: [PATCH 05/17] update gravity and add demo fragment --- .../com/zhy/view/flowlayout/FlowLayout.java | 58 +++--- flowlayout-lib/src/main/res/values/attrs.xml | 6 +- .../com/zhy/flowlayout/CategoryActivity.java | 4 +- .../com/zhy/flowlayout/GravityFragment.java | 42 +++++ .../layout/fragment_gravity_flow_layout.xml | 174 ++++++++++++++++++ 5 files changed, 248 insertions(+), 36 deletions(-) create mode 100644 flowlayout/src/main/java/com/zhy/flowlayout/GravityFragment.java create mode 100644 flowlayout/src/main/res/layout/fragment_gravity_flow_layout.xml diff --git a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/FlowLayout.java b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/FlowLayout.java index 14b5c81..5c4f431 100755 --- a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/FlowLayout.java +++ b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/FlowLayout.java @@ -12,18 +12,21 @@ public class FlowLayout extends ViewGroup { private static final String TAG = "FlowLayout"; + private static final int LEFT = -1; + private static final int CENTER = 0; + private static final int RIGHT = 1; + protected List> mAllViews = new ArrayList>(); protected List mLineHeight = new ArrayList(); - private String mGravity; + protected List mLineWidth = new ArrayList(); + private int mGravity; private List lineViews = new ArrayList(); public FlowLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.TagFlowLayout); - mGravity = ta.getString(R.styleable.TagFlowLayout_gravity); - if (mGravity == null) - mGravity = getResources().getString(R.string.gravity_left); + mGravity = ta.getInt(R.styleable.TagFlowLayout_gravity,LEFT); ta.recycle(); } @@ -129,6 +132,7 @@ protected void onLayout(boolean changed, int l, int t, int r, int b) { mLineHeight.add(lineHeight); mAllViews.add(lineViews); + mLineWidth.add(lineWidth); lineWidth = 0; lineHeight = childHeight + lp.topMargin + lp.bottomMargin; @@ -141,9 +145,11 @@ protected void onLayout(boolean changed, int l, int t, int r, int b) } mLineHeight.add(lineHeight); + mLineWidth.add(lineWidth); mAllViews.add(lineViews); + int left = getPaddingLeft(); int top = getPaddingTop(); @@ -154,7 +160,20 @@ protected void onLayout(boolean changed, int l, int t, int r, int b) lineViews = mAllViews.get(i); lineHeight = mLineHeight.get(i); - left = getStartLeft(lineViews); + // set gravity + int currentLineWidth = this.mLineWidth.get(i); + switch (this.mGravity){ + case LEFT: + left = getPaddingLeft(); + break; + case CENTER: + left = (width - currentLineWidth)/2+getPaddingLeft(); + break; + case RIGHT: + left = width - currentLineWidth + getPaddingLeft(); + break; + } + for (int j = 0; j < lineViews.size(); j++) { View child = lineViews.get(j); @@ -181,35 +200,6 @@ protected void onLayout(boolean changed, int l, int t, int r, int b) } - private int getStartLeft(List lineViews) { - int left = getPaddingLeft(); - - int needWidth = 0; - for (int j = 0; j < lineViews.size(); j++) { - View child = lineViews.get(j); - if (child.getVisibility() == View.GONE) { - continue; - } - - MarginLayoutParams lp = (MarginLayoutParams) child - .getLayoutParams(); - needWidth += child.getMeasuredWidth() + lp.leftMargin - + lp.rightMargin; - } - - needWidth += getPaddingLeft() + getPaddingRight(); - if (mGravity.equals(getResources().getString(R.string.gravity_center))) { - if (getMeasuredWidth()> needWidth) { - left += (getMeasuredWidth() - needWidth) / 2; - } - } else if (mGravity.equals(getResources().getString(R.string.gravity_right))) { - if (getMeasuredWidth()> needWidth) { - left += getMeasuredWidth() - needWidth; - } - } - return left; - } - @Override public LayoutParams generateLayoutParams(AttributeSet attrs) { diff --git a/flowlayout-lib/src/main/res/values/attrs.xml b/flowlayout-lib/src/main/res/values/attrs.xml index f341836..b887d20 100644 --- a/flowlayout-lib/src/main/res/values/attrs.xml +++ b/flowlayout-lib/src/main/res/values/attrs.xml @@ -3,6 +3,10 @@ - + + + + + \ No newline at end of file diff --git a/flowlayout/src/main/java/com/zhy/flowlayout/CategoryActivity.java b/flowlayout/src/main/java/com/zhy/flowlayout/CategoryActivity.java index 2ac28d3..12374ec 100644 --- a/flowlayout/src/main/java/com/zhy/flowlayout/CategoryActivity.java +++ b/flowlayout/src/main/java/com/zhy/flowlayout/CategoryActivity.java @@ -15,7 +15,7 @@ public class CategoryActivity extends AppCompatActivity private String[] mTabTitles = new String[] {"Muli Selected", "Limit 3", - "Event Test", "ScrollView Test","Single Choose"}; + "Event Test", "ScrollView Test","Single Choose","Gravity"}; @Override @@ -44,6 +44,8 @@ public Fragment getItem(int i) return new ScrollViewTestFragment(); case 4: return new SingleChooseFragment(); + case 5: + return GravityFragment.getOurInstance(); default: return new EventTestFragment(); } diff --git a/flowlayout/src/main/java/com/zhy/flowlayout/GravityFragment.java b/flowlayout/src/main/java/com/zhy/flowlayout/GravityFragment.java new file mode 100644 index 0000000..73e1c7b --- /dev/null +++ b/flowlayout/src/main/java/com/zhy/flowlayout/GravityFragment.java @@ -0,0 +1,42 @@ +package com.zhy.flowlayout; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +/** + * Description:GravityFragment + * Created by:CaMnter + * Time:2015年12月25日 16:11 + */ +public class GravityFragment extends Fragment { + + public static GravityFragment ourInstance; + + public static GravityFragment getOurInstance() { + if (ourInstance == null) ourInstance = new GravityFragment(); + return ourInstance; + } + + private GravityFragment(){ + + } + + private View self; + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + if (this.self == null) { + this.self = inflater.inflate(R.layout.fragment_gravity_flow_layout, null); + } + if (this.self.getParent() != null) { + ViewGroup parent = (ViewGroup) this.self.getParent(); + parent.removeView(this.self); + } + return this.self; + } +} diff --git a/flowlayout/src/main/res/layout/fragment_gravity_flow_layout.xml b/flowlayout/src/main/res/layout/fragment_gravity_flow_layout.xml new file mode 100644 index 0000000..3048688 --- /dev/null +++ b/flowlayout/src/main/res/layout/fragment_gravity_flow_layout.xml @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 1879588b59d2d2a799d55a14c915ad1d43b60c8f Mon Sep 17 00:00:00 2001 From: sxlcssj Date: Wed, 3 Feb 2016 10:37:08 +0800 Subject: [PATCH 06/17] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dadapter=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=94=B9=E5=8F=98=E5=AF=BC=E8=87=B4=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zhy/view/flowlayout/FlowLayout.java | 1 + .../zhy/view/flowlayout/TagFlowLayout.java | 19 +++++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/FlowLayout.java b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/FlowLayout.java index 5c4f431..2811100 100755 --- a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/FlowLayout.java +++ b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/FlowLayout.java @@ -109,6 +109,7 @@ protected void onLayout(boolean changed, int l, int t, int r, int b) { mAllViews.clear(); mLineHeight.clear(); + mLineWidth.clear(); lineViews.clear(); int width = getWidth(); diff --git a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java index 1345c5e..8d21c10 100644 --- a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java +++ b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java @@ -130,7 +130,18 @@ private void changeAdapter() // lp.leftMargin = clp.leftMargin; // lp.rightMargin = clp.rightMargin; tagView.setDuplicateParentStateEnabled(true); - tagViewContainer.setLayoutParams(tagView.getLayoutParams()); + if(tagView.getLayoutParams()!=null) + { + tagViewContainer.setLayoutParams(tagView.getLayoutParams()); + }else + { + MarginLayoutParams lp=new MarginLayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); + lp.setMargins(dip2px(getContext(), 5), + dip2px(getContext(), 5), + dip2px(getContext(), 5), + dip2px(getContext(), 5)); + tagViewContainer.setLayoutParams(lp); + } tagViewContainer.addView(tagView); addView(tagViewContainer); @@ -308,8 +319,12 @@ private TagView findChild(int x, int y) @Override public void onChanged() { + mSelectedView.clear(); changeAdapter(); } - + public static int dip2px(Context context, float dpValue) { + final float scale = context.getResources().getDisplayMetrics().density; + return (int) (dpValue * scale + 0.5f); + } } From eefccc770446947c07b3a45991ca40d2477ee899 Mon Sep 17 00:00:00 2001 From: sxlcssj Date: Wed, 3 Feb 2016 10:38:12 +0800 Subject: [PATCH 07/17] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/zhy/view/flowlayout/TagAdapter.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagAdapter.java b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagAdapter.java index 849fb1a..7bb43a3 100644 --- a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagAdapter.java +++ b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagAdapter.java @@ -6,6 +6,7 @@ import java.util.Arrays; import java.util.HashSet; import java.util.List; +import java.util.Set; public abstract class TagAdapter { @@ -39,6 +40,12 @@ public void setSelectedList(int... pos) mCheckedPosList.add(pos[i]); notifyDataChanged(); } + public void setSelectedList(Set set) + { + mCheckedPosList.clear(); + mCheckedPosList.addAll(set); + notifyDataChanged(); + } HashSet getPreCheckedList() { From 4153017170b99af21a14bdc0451e756533e46072 Mon Sep 17 00:00:00 2001 From: hongyangAndroid Date: Thu, 3 Mar 2016 19:32:31 +0800 Subject: [PATCH 08/17] fix #22 --- .idea/vcs.xml | 2 +- README.md | 4 ++-- flowlayout-lib/build.gradle | 2 +- flowlayout-lib/flowlayout-lib.iml | 2 +- .../com/zhy/view/flowlayout/TagFlowLayout.java | 18 ++++++++++-------- .../com/zhy/flowlayout/GravityFragment.java | 4 ---- 6 files changed, 15 insertions(+), 17 deletions(-) diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 6564d52..94a25f7 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ -
        +
          \ No newline at end of file diff --git a/README.md b/README.md index 5e966bf..c6af043 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ [![Android Gems](http://www.android-gems.com/badge/hongyangAndroid/FlowLayout.svg?branch=master)](http://www.android-gems.com/lib/hongyangAndroid/FlowLayout) - + # FlowLayout Android流式布局,支持单选、多选等,适合用于产品标签等。 @@ -23,7 +23,7 @@ Android流式布局,支持单选、多选等,适合用于产品标签等。 ```java dependencies { - compile 'com.zhy:flowlayout-lib:1.0.0' + compile 'com.zhy:flowlayout-lib:1.0.1' } ``` diff --git a/flowlayout-lib/build.gradle b/flowlayout-lib/build.gradle index 445c824..e302bfb 100644 --- a/flowlayout-lib/build.gradle +++ b/flowlayout-lib/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.library' apply plugin: 'com.github.dcendents.android-maven' apply plugin: 'com.jfrog.bintray' -version = "1.0.0" +version = "1.0.1" android { compileSdkVersion 22 buildToolsVersion "23.0.0 rc3" diff --git a/flowlayout-lib/flowlayout-lib.iml b/flowlayout-lib/flowlayout-lib.iml index fb6d7d6..b0a8bc3 100644 --- a/flowlayout-lib/flowlayout-lib.iml +++ b/flowlayout-lib/flowlayout-lib.iml @@ -1,5 +1,5 @@ - + diff --git a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java index 8d21c10..c01f017 100644 --- a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java +++ b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java @@ -130,12 +130,12 @@ private void changeAdapter() // lp.leftMargin = clp.leftMargin; // lp.rightMargin = clp.rightMargin; tagView.setDuplicateParentStateEnabled(true); - if(tagView.getLayoutParams()!=null) + if (tagView.getLayoutParams() != null) { tagViewContainer.setLayoutParams(tagView.getLayoutParams()); - }else + } else { - MarginLayoutParams lp=new MarginLayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); + MarginLayoutParams lp = new MarginLayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); lp.setMargins(dip2px(getContext(), 5), dip2px(getContext(), 5), dip2px(getContext(), 5), @@ -146,7 +146,7 @@ private void changeAdapter() addView(tagViewContainer); - if(preCheckedList.contains(i)) + if (preCheckedList.contains(i)) { tagViewContainer.setChecked(true); } @@ -211,7 +211,7 @@ private void doSelect(TagView child, int position) if (!child.isChecked()) { //处理max_select=1的情况 - if(mSelectedMax == 1 && mSelectedView.size() == 1) + if (mSelectedMax == 1 && mSelectedView.size() == 1) { Iterator iterator = mSelectedView.iterator(); Integer preIndex = iterator.next(); @@ -220,7 +220,7 @@ private void doSelect(TagView child, int position) child.setChecked(true); mSelectedView.remove(preIndex); mSelectedView.add(position); - }else + } else { if (mSelectedMax> 0 && mSelectedView.size()>= mSelectedMax) return; @@ -278,7 +278,8 @@ protected void onRestoreInstanceState(Parcelable state) mSelectedView.add(index); TagView tagView = (TagView) getChildAt(index); - tagView.setChecked(true); + if (tagView != null) + tagView.setChecked(true); } } @@ -323,7 +324,8 @@ public void onChanged() changeAdapter(); } - public static int dip2px(Context context, float dpValue) { + public static int dip2px(Context context, float dpValue) + { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); } diff --git a/flowlayout/src/main/java/com/zhy/flowlayout/GravityFragment.java b/flowlayout/src/main/java/com/zhy/flowlayout/GravityFragment.java index 73e1c7b..35a0de2 100644 --- a/flowlayout/src/main/java/com/zhy/flowlayout/GravityFragment.java +++ b/flowlayout/src/main/java/com/zhy/flowlayout/GravityFragment.java @@ -21,10 +21,6 @@ public static GravityFragment getOurInstance() { return ourInstance; } - private GravityFragment(){ - - } - private View self; @Nullable From 9227139379a138c79c25f86748a85248f4482337 Mon Sep 17 00:00:00 2001 From: hongyangAndroid Date: Tue, 8 Mar 2016 12:50:44 +0800 Subject: [PATCH 09/17] add setSelected in TagAdaper --- .idea/misc.xml | 25 +++++++++++++++++++ flowlayout-lib/build.gradle | 2 +- flowlayout-lib/flowlayout-lib.iml | 2 +- .../com/zhy/view/flowlayout/TagAdapter.java | 17 +++++++++---- .../zhy/view/flowlayout/TagFlowLayout.java | 6 +++++ .../com/zhy/flowlayout/EventTestFragment.java | 6 +++++ 6 files changed, 51 insertions(+), 7 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index dae7a60..bb965f4 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -27,6 +27,31 @@ + + + + + + + + + Android Lint + + + Gradle + + + Probable bugsGradle + + + + + Android + + + + + diff --git a/flowlayout-lib/build.gradle b/flowlayout-lib/build.gradle index e302bfb..a71cdb7 100644 --- a/flowlayout-lib/build.gradle +++ b/flowlayout-lib/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.library' apply plugin: 'com.github.dcendents.android-maven' apply plugin: 'com.jfrog.bintray' -version = "1.0.1" +version = "1.0.2" android { compileSdkVersion 22 buildToolsVersion "23.0.0 rc3" diff --git a/flowlayout-lib/flowlayout-lib.iml b/flowlayout-lib/flowlayout-lib.iml index b0a8bc3..553af29 100644 --- a/flowlayout-lib/flowlayout-lib.iml +++ b/flowlayout-lib/flowlayout-lib.iml @@ -1,5 +1,5 @@ - + diff --git a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagAdapter.java b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagAdapter.java index 7bb43a3..e927665 100644 --- a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagAdapter.java +++ b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagAdapter.java @@ -40,12 +40,13 @@ public void setSelectedList(int... pos) mCheckedPosList.add(pos[i]); notifyDataChanged(); } - public void setSelectedList(Set set) + + public void setSelectedList(Set set) { - mCheckedPosList.clear(); - mCheckedPosList.addAll(set); - notifyDataChanged(); - } + mCheckedPosList.clear(); + mCheckedPosList.addAll(set); + notifyDataChanged(); + } HashSet getPreCheckedList() { @@ -70,4 +71,10 @@ public T getItem(int position) public abstract View getView(FlowLayout parent, int position, T t); + public boolean setSelected(int position ,T t) + { + return false; + } + + } \ No newline at end of file diff --git a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java index c01f017..c372e4a 100644 --- a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java +++ b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java @@ -150,6 +150,12 @@ private void changeAdapter() { tagViewContainer.setChecked(true); } + + if (mTagAdapter.setSelected(i, adapter.getItem(i))) + { + mSelectedView.add(i); + tagViewContainer.setChecked(true); + } } mSelectedView.addAll(preCheckedList); diff --git a/flowlayout/src/main/java/com/zhy/flowlayout/EventTestFragment.java b/flowlayout/src/main/java/com/zhy/flowlayout/EventTestFragment.java index 6af2d1b..7738611 100644 --- a/flowlayout/src/main/java/com/zhy/flowlayout/EventTestFragment.java +++ b/flowlayout/src/main/java/com/zhy/flowlayout/EventTestFragment.java @@ -51,6 +51,12 @@ public View getView(FlowLayout parent, int position, String s) tv.setText(s); return tv; } + + @Override + public boolean setSelected(int position, String s) + { + return s.equals("Android"); + } }); mFlowLayout.setOnTagClickListener(new TagFlowLayout.OnTagClickListener() From af3b66e076542460093f5cf6aba99f1d4f4e845b Mon Sep 17 00:00:00 2001 From: hongyangAndroid Date: 2016年4月29日 13:06:29 +0800 Subject: [PATCH 10/17] fixed #19 --- .idea/vcs.xml | 2 +- README.md | 2 +- flowlayout-lib/build.gradle | 2 +- flowlayout-lib/flowlayout-lib.iml | 4 +- flowlayout-lib/src/main/AndroidManifest.xml | 6 +- .../com/zhy/view/flowlayout/TagAdapter.java | 6 +- .../zhy/view/flowlayout/TagFlowLayout.java | 6 + flowlayout/build.gradle | 1 + flowlayout/flowlayout.iml | 10 +- .../com/zhy/flowlayout/CategoryActivity.java | 6 +- .../com/zhy/flowlayout/EventTestFragment.java | 2 +- .../com/zhy/flowlayout/GravityFragment.java | 30 +---- .../zhy/flowlayout/LimitSelectedFragment.java | 2 +- .../zhy/flowlayout/ListViewTestFragment.java | 104 ++++++++++++++++++ .../flowlayout/ScrollViewTestFragment.java | 2 +- .../com/zhy/flowlayout/SimpleFragment.java | 2 +- .../main/res/layout/fragment_event_test.xml | 15 +++ .../src/main/res/layout/fragment_listview.xml | 8 ++ .../src/main/res/layout/fragment_sc.xml | 15 +++ .../src/main/res/layout/item_for_listview.xml | 8 ++ 20 files changed, 188 insertions(+), 45 deletions(-) create mode 100644 flowlayout/src/main/java/com/zhy/flowlayout/ListViewTestFragment.java create mode 100644 flowlayout/src/main/res/layout/fragment_event_test.xml create mode 100644 flowlayout/src/main/res/layout/fragment_listview.xml create mode 100644 flowlayout/src/main/res/layout/fragment_sc.xml create mode 100644 flowlayout/src/main/res/layout/item_for_listview.xml diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 94a25f7..6564d52 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ -
            +
              \ No newline at end of file diff --git a/README.md b/README.md index c6af043..bb9c598 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Android流式布局,支持单选、多选等,适合用于产品标签等。 ```java dependencies { - compile 'com.zhy:flowlayout-lib:1.0.1' + compile 'com.zhy:flowlayout-lib:1.0.3' } ``` diff --git a/flowlayout-lib/build.gradle b/flowlayout-lib/build.gradle index a71cdb7..236c418 100644 --- a/flowlayout-lib/build.gradle +++ b/flowlayout-lib/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.library' apply plugin: 'com.github.dcendents.android-maven' apply plugin: 'com.jfrog.bintray' -version = "1.0.2" +version = "1.0.3" android { compileSdkVersion 22 buildToolsVersion "23.0.0 rc3" diff --git a/flowlayout-lib/flowlayout-lib.iml b/flowlayout-lib/flowlayout-lib.iml index 553af29..1f320ce 100644 --- a/flowlayout-lib/flowlayout-lib.iml +++ b/flowlayout-lib/flowlayout-lib.iml @@ -1,5 +1,5 @@ - + @@ -73,6 +73,8 @@ + + diff --git a/flowlayout-lib/src/main/AndroidManifest.xml b/flowlayout-lib/src/main/AndroidManifest.xml index 62f8380..e92bbe1 100644 --- a/flowlayout-lib/src/main/AndroidManifest.xml +++ b/flowlayout-lib/src/main/AndroidManifest.xml @@ -1,10 +1,6 @@ +> - - diff --git a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagAdapter.java b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagAdapter.java index e927665..2423f00 100644 --- a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagAdapter.java +++ b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagAdapter.java @@ -43,8 +43,10 @@ public void setSelectedList(int... pos) public void setSelectedList(Set set) { + mCheckedPosList.clear(); - mCheckedPosList.addAll(set); + if (set != null) + mCheckedPosList.addAll(set); notifyDataChanged(); } @@ -71,7 +73,7 @@ public T getItem(int position) public abstract View getView(FlowLayout parent, int position, T t); - public boolean setSelected(int position ,T t) + public boolean setSelected(int position, T t) { return false; } diff --git a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java index c372e4a..3bb9701 100644 --- a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java +++ b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java @@ -245,6 +245,12 @@ private void doSelect(TagView child, int position) } } + public TagAdapter getAdapter() + { + return mTagAdapter; + } + + private static final String KEY_CHOOSE_POS = "key_choose_pos"; private static final String KEY_DEFAULT = "key_default"; diff --git a/flowlayout/build.gradle b/flowlayout/build.gradle index 2a92bb7..da34a8c 100644 --- a/flowlayout/build.gradle +++ b/flowlayout/build.gradle @@ -24,4 +24,5 @@ dependencies { compile 'com.android.support:appcompat-v7:22.2.1' compile project(':flowlayout-lib') compile 'com.android.support:design:22.2.0' + compile 'com.zhy:base-adapter:2.0.1' } diff --git a/flowlayout/flowlayout.iml b/flowlayout/flowlayout.iml index 7c907a3..5a59941 100644 --- a/flowlayout/flowlayout.iml +++ b/flowlayout/flowlayout.iml @@ -73,7 +73,9 @@ - + + + @@ -91,9 +93,11 @@ + + - - + + diff --git a/flowlayout/src/main/java/com/zhy/flowlayout/CategoryActivity.java b/flowlayout/src/main/java/com/zhy/flowlayout/CategoryActivity.java index 12374ec..fb6c41f 100644 --- a/flowlayout/src/main/java/com/zhy/flowlayout/CategoryActivity.java +++ b/flowlayout/src/main/java/com/zhy/flowlayout/CategoryActivity.java @@ -15,7 +15,7 @@ public class CategoryActivity extends AppCompatActivity private String[] mTabTitles = new String[] {"Muli Selected", "Limit 3", - "Event Test", "ScrollView Test","Single Choose","Gravity"}; + "Event Test", "ScrollView Test", "Single Choose", "Gravity", "ListView Sample"}; @Override @@ -45,7 +45,9 @@ public Fragment getItem(int i) case 4: return new SingleChooseFragment(); case 5: - return GravityFragment.getOurInstance(); + return new GravityFragment(); + case 6: + return new ListViewTestFragment(); default: return new EventTestFragment(); } diff --git a/flowlayout/src/main/java/com/zhy/flowlayout/EventTestFragment.java b/flowlayout/src/main/java/com/zhy/flowlayout/EventTestFragment.java index 7738611..2bb6985 100644 --- a/flowlayout/src/main/java/com/zhy/flowlayout/EventTestFragment.java +++ b/flowlayout/src/main/java/com/zhy/flowlayout/EventTestFragment.java @@ -31,7 +31,7 @@ public class EventTestFragment extends Fragment @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - return inflater.inflate(R.layout.activity_main, container, false); + return inflater.inflate(R.layout.fragment_event_test, container, false); } @Override diff --git a/flowlayout/src/main/java/com/zhy/flowlayout/GravityFragment.java b/flowlayout/src/main/java/com/zhy/flowlayout/GravityFragment.java index 35a0de2..0a1bfaf 100644 --- a/flowlayout/src/main/java/com/zhy/flowlayout/GravityFragment.java +++ b/flowlayout/src/main/java/com/zhy/flowlayout/GravityFragment.java @@ -7,32 +7,12 @@ import android.view.View; import android.view.ViewGroup; -/** - * Description:GravityFragment - * Created by:CaMnter - * Time:2015年12月25日 16:11 - */ -public class GravityFragment extends Fragment { - - public static GravityFragment ourInstance; - - public static GravityFragment getOurInstance() { - if (ourInstance == null) ourInstance = new GravityFragment(); - return ourInstance; - } - - private View self; - +public class GravityFragment extends Fragment +{ @Nullable @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - if (this.self == null) { - this.self = inflater.inflate(R.layout.fragment_gravity_flow_layout, null); - } - if (this.self.getParent() != null) { - ViewGroup parent = (ViewGroup) this.self.getParent(); - parent.removeView(this.self); - } - return this.self; + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) + { + return inflater.inflate(R.layout.fragment_gravity_flow_layout, null); } } diff --git a/flowlayout/src/main/java/com/zhy/flowlayout/LimitSelectedFragment.java b/flowlayout/src/main/java/com/zhy/flowlayout/LimitSelectedFragment.java index c024444..86636e1 100644 --- a/flowlayout/src/main/java/com/zhy/flowlayout/LimitSelectedFragment.java +++ b/flowlayout/src/main/java/com/zhy/flowlayout/LimitSelectedFragment.java @@ -29,7 +29,7 @@ public class LimitSelectedFragment extends Fragment @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - return inflater.inflate(R.layout.activity_main, container, false); + return inflater.inflate(R.layout.fragment_event_test, container, false); } @Override diff --git a/flowlayout/src/main/java/com/zhy/flowlayout/ListViewTestFragment.java b/flowlayout/src/main/java/com/zhy/flowlayout/ListViewTestFragment.java new file mode 100644 index 0000000..1cd7463 --- /dev/null +++ b/flowlayout/src/main/java/com/zhy/flowlayout/ListViewTestFragment.java @@ -0,0 +1,104 @@ +package com.zhy.flowlayout; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ListView; +import android.widget.TextView; + +import com.zhy.base.adapter.ViewHolder; +import com.zhy.base.adapter.abslistview.CommonAdapter; +import com.zhy.view.flowlayout.FlowLayout; +import com.zhy.view.flowlayout.TagAdapter; +import com.zhy.view.flowlayout.TagFlowLayout; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * Created by zhy on 15/9/10. + */ +public class ListViewTestFragment extends Fragment +{ + + private List> mDatas = new ArrayList>(); + private ListView mListView; + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) + { + return inflater.inflate(R.layout.fragment_listview, container, false); + } + + @Override + public void onViewCreated(final View view, @Nullable Bundle savedInstanceState) + { + initDatas(); + + mListView = (ListView) view.findViewById(R.id.id_listview); + mListView.setAdapter(new CommonAdapter>(getActivity(), R.layout.item_for_listview, mDatas) + { + Map> selectedMap = new HashMap>(); + + + @Override + public void convert(final ViewHolder viewHolder, List strings) + { + TagFlowLayout tagFlowLayout = viewHolder.getView(R.id.id_tagflowlayout); + + TagAdapter tagAdapter; + if (tagFlowLayout.getAdapter() == null) + { + tagAdapter = new TagAdapter(strings) + { + @Override + public View getView(FlowLayout parent, int position, String o) + { + //can use viewholder + TextView tv = (TextView) mInflater.inflate(R.layout.tv, + parent, false); + tv.setText(o); + return tv; + } + }; + } else + { + tagAdapter = tagFlowLayout.getAdapter(); + } + tagFlowLayout.setAdapter(tagAdapter); + //重置状态 + tagAdapter.setSelectedList(selectedMap.get(viewHolder.getItemPosition())); + + tagFlowLayout.setOnSelectListener(new TagFlowLayout.OnSelectListener() + { + @Override + public void onSelected(Set selectPosSet) + { + selectedMap.put(viewHolder.getItemPosition(), selectPosSet); + } + }); + } + }); + + } + + private void initDatas() + { + for (int i = 'A'; i < 'z'; i++) + { + List itemData = new ArrayList(3); + for (int j = 0; j < 3; j++) + { + itemData.add((char) i + ""); + } + mDatas.add(itemData); + } + } +} diff --git a/flowlayout/src/main/java/com/zhy/flowlayout/ScrollViewTestFragment.java b/flowlayout/src/main/java/com/zhy/flowlayout/ScrollViewTestFragment.java index 2960f97..6f7de01 100644 --- a/flowlayout/src/main/java/com/zhy/flowlayout/ScrollViewTestFragment.java +++ b/flowlayout/src/main/java/com/zhy/flowlayout/ScrollViewTestFragment.java @@ -43,7 +43,7 @@ public class ScrollViewTestFragment extends Fragment @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - return inflater.inflate(R.layout.activity_main_sc, container, false); + return inflater.inflate(R.layout.fragment_sc, container, false); } @Override diff --git a/flowlayout/src/main/java/com/zhy/flowlayout/SimpleFragment.java b/flowlayout/src/main/java/com/zhy/flowlayout/SimpleFragment.java index 32650f5..c1068c9 100644 --- a/flowlayout/src/main/java/com/zhy/flowlayout/SimpleFragment.java +++ b/flowlayout/src/main/java/com/zhy/flowlayout/SimpleFragment.java @@ -28,7 +28,7 @@ public class SimpleFragment extends Fragment @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - return inflater.inflate(R.layout.activity_main, container, false); + return inflater.inflate(R.layout.fragment_event_test, container, false); } @Override diff --git a/flowlayout/src/main/res/layout/fragment_event_test.xml b/flowlayout/src/main/res/layout/fragment_event_test.xml new file mode 100644 index 0000000..63dde54 --- /dev/null +++ b/flowlayout/src/main/res/layout/fragment_event_test.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/flowlayout/src/main/res/layout/fragment_listview.xml b/flowlayout/src/main/res/layout/fragment_listview.xml new file mode 100644 index 0000000..8398628 --- /dev/null +++ b/flowlayout/src/main/res/layout/fragment_listview.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/flowlayout/src/main/res/layout/fragment_sc.xml b/flowlayout/src/main/res/layout/fragment_sc.xml new file mode 100644 index 0000000..b5c16ce --- /dev/null +++ b/flowlayout/src/main/res/layout/fragment_sc.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/flowlayout/src/main/res/layout/item_for_listview.xml b/flowlayout/src/main/res/layout/item_for_listview.xml new file mode 100644 index 0000000..44af644 --- /dev/null +++ b/flowlayout/src/main/res/layout/item_for_listview.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file From c41adaab884e75f8d5f22bf9b5c00bfae1013f76 Mon Sep 17 00:00:00 2001 From: hongyangAndroid Date: 2016年4月29日 15:22:20 +0800 Subject: [PATCH 11/17] fix listview demo --- .../com/zhy/view/flowlayout/TagAdapter.java | 15 ++++++----- .../zhy/view/flowlayout/TagFlowLayout.java | 3 --- .../zhy/flowlayout/ListViewTestFragment.java | 27 +++++++------------ 3 files changed, 19 insertions(+), 26 deletions(-) diff --git a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagAdapter.java b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagAdapter.java index 2423f00..312c6cc 100644 --- a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagAdapter.java +++ b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagAdapter.java @@ -24,7 +24,7 @@ public TagAdapter(T[] datas) mTagDatas = new ArrayList(Arrays.asList(datas)); } - static interface OnDataChangedListener + interface OnDataChangedListener { void onChanged(); } @@ -34,16 +34,18 @@ void setOnDataChangedListener(OnDataChangedListener listener) mOnDataChangedListener = listener; } - public void setSelectedList(int... pos) + public void setSelectedList(int... poses) { - for (int i = 0; i < pos.length; i++) - mCheckedPosList.add(pos[i]); - notifyDataChanged(); + Set set = new HashSet(); + for (int pos : poses) + { + set.add(pos); + } + setSelectedList(set); } public void setSelectedList(Set set) { - mCheckedPosList.clear(); if (set != null) mCheckedPosList.addAll(set); @@ -79,4 +81,5 @@ public boolean setSelected(int position, T t) } + } \ No newline at end of file diff --git a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java index 3bb9701..986af2b 100644 --- a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java +++ b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java @@ -91,7 +91,6 @@ public interface OnTagClickListener private OnTagClickListener mOnTagClickListener; - public void setOnTagClickListener(OnTagClickListener onTagClickListener) { mOnTagClickListener = onTagClickListener; @@ -101,8 +100,6 @@ public void setOnTagClickListener(OnTagClickListener onTagClickListener) public void setAdapter(TagAdapter adapter) { - //if (mTagAdapter == adapter) - // return; mTagAdapter = adapter; mTagAdapter.setOnDataChangedListener(this); mSelectedView.clear(); diff --git a/flowlayout/src/main/java/com/zhy/flowlayout/ListViewTestFragment.java b/flowlayout/src/main/java/com/zhy/flowlayout/ListViewTestFragment.java index 1cd7463..8066f82 100644 --- a/flowlayout/src/main/java/com/zhy/flowlayout/ListViewTestFragment.java +++ b/flowlayout/src/main/java/com/zhy/flowlayout/ListViewTestFragment.java @@ -53,25 +53,18 @@ public void convert(final ViewHolder viewHolder, List strings) { TagFlowLayout tagFlowLayout = viewHolder.getView(R.id.id_tagflowlayout); - TagAdapter tagAdapter; - if (tagFlowLayout.getAdapter() == null) + TagAdapter tagAdapter = new TagAdapter(strings) { - tagAdapter = new TagAdapter(strings) + @Override + public View getView(FlowLayout parent, int position, String o) { - @Override - public View getView(FlowLayout parent, int position, String o) - { - //can use viewholder - TextView tv = (TextView) mInflater.inflate(R.layout.tv, - parent, false); - tv.setText(o); - return tv; - } - }; - } else - { - tagAdapter = tagFlowLayout.getAdapter(); - } + //can use viewholder + TextView tv = (TextView) mInflater.inflate(R.layout.tv, + parent, false); + tv.setText(o); + return tv; + } + }; tagFlowLayout.setAdapter(tagAdapter); //重置状态 tagAdapter.setSelectedList(selectedMap.get(viewHolder.getItemPosition())); From e8f95bd3b3be85760908c9beef868fb734b84bfb Mon Sep 17 00:00:00 2001 From: ChristianChen Date: 2017年3月18日 15:49:21 +0800 Subject: [PATCH 12/17] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E9=BB=98=E8=AE=A4Tag=E6=97=B6=E7=9A=84=E5=B4=A9=E6=BA=83?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 设置默认Tag时,如果不设置mOnDataChangedListener,则会造成空指针异常 --- .../src/main/java/com/zhy/view/flowlayout/TagAdapter.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagAdapter.java b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagAdapter.java index 312c6cc..b05f850 100644 --- a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagAdapter.java +++ b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagAdapter.java @@ -2,6 +2,7 @@ import android.view.View; + import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; @@ -64,8 +65,9 @@ public int getCount() } public void notifyDataChanged() - { - mOnDataChangedListener.onChanged(); + { + if(mOnDataChangedListener != null) + mOnDataChangedListener.onChanged(); } public T getItem(int position) @@ -82,4 +84,4 @@ public boolean setSelected(int position, T t) -} \ No newline at end of file +} From 4e166746de314f5928bd11574205c7a933120fb6 Mon Sep 17 00:00:00 2001 From: ValuesFeng <358958028@qq.com> Date: 2017年4月11日 09:21:34 +0800 Subject: [PATCH 13/17] fix tagview bug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Android大部分机型中frameLayout可能会忽略子view的margin值。 但是部分机型上不会,例如华为,如果在xml中设置锅tagview的margin,在changeAdapter中会对这个margin进行拷贝,造成UI上两倍的margin效果,修改部分为只设置外层framelayout的margin,去掉子view的margin。 --- .../src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java index 986af2b..d63980d 100644 --- a/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java +++ b/flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java @@ -139,6 +139,8 @@ private void changeAdapter() dip2px(getContext(), 5)); tagViewContainer.setLayoutParams(lp); } + tagView.setLayoutParams(new FrameLayout.LayoutParams(tagView.getLayoutParams().width, + tagView.getLayoutParams().height)); tagViewContainer.addView(tagView); addView(tagViewContainer); From da1aed69f70429d547b8ef86d8fa9549b1c749ce Mon Sep 17 00:00:00 2001 From: zhanghongyang01 Date: 2017年9月14日 15:34:27 +0800 Subject: [PATCH 14/17] =?UTF-8?q?=E3=80=90fixbug=E3=80=91#97,#95,#92,#90,#?= =?UTF-8?q?85,#83,#80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.name | 1 - .idea/compiler.xml | 2 +- .idea/encodings.xml | 6 + .idea/gradle.xml | 8 +- .idea/misc.xml | 29 +- .idea/modules.xml | 6 +- .idea/vcs.xml | 3 +- FlowLayout.iml | 19 ++ README.md | 25 +- build.gradle | 5 +- flowlayout-lib/build.gradle | 89 +----- flowlayout-lib/flowlayout-lib.iml | 56 ++-- .../com/zhy/view/flowlayout/FlowLayout.java | 67 ++-- .../com/zhy/view/flowlayout/TagAdapter.java | 60 ++-- .../zhy/view/flowlayout/TagFlowLayout.java | 298 ++++++------------ flowlayout-lib/src/main/res/values/attrs.xml | 1 - flowlayout/build.gradle | 10 +- flowlayout/flowlayout.iml | 83 +++-- .../com/zhy/flowlayout/SimpleFragment.java | 23 +- .../src/main/res/layout/activity_category.xml | 2 +- gradle/wrapper/gradle-wrapper.properties | 4 +- 21 files changed, 339 insertions(+), 458 deletions(-) delete mode 100644 .idea/.name create mode 100644 .idea/encodings.xml create mode 100644 FlowLayout.iml diff --git a/.idea/.name b/.idea/.name deleted file mode 100644 index 98fbf6d..0000000 --- a/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -Github-FlowLayout \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 9a8b7e5..96cc43e 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,7 +1,6 @@ - diff --git a/.idea/misc.xml b/.idea/misc.xml index bb965f4..cca2cda 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -27,31 +27,6 @@ - - - - - - - - - Android Lint - - - Gradle - - - Probable bugsGradle - - - - - Android - - - - - @@ -62,7 +37,7 @@ - + @@ -72,7 +47,7 @@ - 1.7 + 1.8