Skip to content

Commit c19e1a9

Browse files
author
hongyangAndroid
committed
添加ScrollView的demo
1 parent 170d651 commit c19e1a9

File tree

7 files changed

+143
-35
lines changed

7 files changed

+143
-35
lines changed

flowlayout-lib/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import android.util.Log;
1111
import android.view.MotionEvent;
1212
import android.view.View;
13-
import android.view.ViewGroup;
1413

1514
import java.util.HashSet;
1615
import java.util.Set;
@@ -101,8 +100,8 @@ public void setOnTagClickListener(OnTagClickListener onTagClickListener)
101100

102101
public void setAdapter(TagAdapter adapter)
103102
{
104-
if (mTagAdapter == adapter)
105-
return;
103+
//if (mTagAdapter == adapter)
104+
// return;
106105
mTagAdapter = adapter;
107106
mTagAdapter.setOnDataChangedListener(this);
108107
changeAdapter();
@@ -118,17 +117,18 @@ private void changeAdapter()
118117
for (int i = 0; i < adapter.getCount(); i++)
119118
{
120119
View tagView = adapter.getView(this, i, adapter.getItem(i));
120+
121121
tagViewContainer = new TagView(getContext());
122-
ViewGroup.MarginLayoutParams clp = (ViewGroup.MarginLayoutParams) tagView.getLayoutParams();
123-
ViewGroup.MarginLayoutParams lp = new ViewGroup.MarginLayoutParams(clp);
124-
lp.width = ViewGroup.LayoutParams.WRAP_CONTENT;
125-
lp.height = ViewGroup.LayoutParams.WRAP_CONTENT;
126-
lp.topMargin = clp.topMargin;
127-
lp.bottomMargin = clp.bottomMargin;
128-
lp.leftMargin = clp.leftMargin;
129-
lp.rightMargin = clp.rightMargin;
122+
// ViewGroup.MarginLayoutParams clp = (ViewGroup.MarginLayoutParams) tagView.getLayoutParams();
123+
// ViewGroup.MarginLayoutParams lp = new ViewGroup.MarginLayoutParams(clp);
124+
// lp.width = ViewGroup.LayoutParams.WRAP_CONTENT;
125+
// lp.height = ViewGroup.LayoutParams.WRAP_CONTENT;
126+
// lp.topMargin = clp.topMargin;
127+
// lp.bottomMargin = clp.bottomMargin;
128+
// lp.leftMargin = clp.leftMargin;
129+
// lp.rightMargin = clp.rightMargin;
130130
tagView.setDuplicateParentStateEnabled(true);
131-
tagViewContainer.setLayoutParams(lp);
131+
tagViewContainer.setLayoutParams(tagView.getLayoutParams());
132132
tagViewContainer.addView(tagView);
133133
addView(tagViewContainer);
134134
}
@@ -147,26 +147,26 @@ public boolean onTouchEvent(MotionEvent event)
147147
}
148148

149149
@Override
150-
public boolean performClick()
151-
{
152-
if (mMotionEvent == null) return super.performClick();
150+
public boolean performClick()
151+
{
152+
if (mMotionEvent == null) return super.performClick();
153153

154-
int x = (int) mMotionEvent.getX();
155-
int y = (int) mMotionEvent.getY();
156-
mMotionEvent = null;
154+
int x = (int) mMotionEvent.getX();
155+
int y = (int) mMotionEvent.getY();
156+
mMotionEvent = null;
157157

158-
TagView child = findChild(x, y);
159-
int pos = findPosByView(child);
160-
if (child != null)
158+
TagView child = findChild(x, y);
159+
int pos = findPosByView(child);
160+
if (child != null)
161+
{
162+
doSelect(child, pos);
163+
if (mOnTagClickListener != null)
161164
{
162-
doSelect(child, pos);
163-
if (mOnTagClickListener != null)
164-
{
165-
return mOnTagClickListener.onTagClick(child.getTagView(), pos, this);
166-
}
165+
return mOnTagClickListener.onTagClick(child.getTagView(), pos, this);
167166
}
168-
return super.performClick();
169167
}
168+
return super.performClick();
169+
}
170170

171171

172172
public void setMaxSelectCount(int count)

flowlayout/src/main/java/com/zhy/flowlayout/CategoryActivity.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public class CategoryActivity extends AppCompatActivity
1313
private TabLayout mTabLayout;
1414
private ViewPager mViewPager;
1515

16-
private String[] mTabTitles = new String[]{"Muli Selected", "Limit 3", "Event Test"};
16+
private String[] mTabTitles = new String[]{"Muli Selected", "Limit 3", "Event Test","ScrollView Test"};
1717

1818

1919
@Override
@@ -37,6 +37,9 @@ public Fragment getItem(int i)
3737
case 1:
3838
return new LimitSelectedFragment();
3939
case 2:
40+
return new EventTestFragment();
41+
case 3:
42+
return new ScrollViewTestFragment();
4043
default:
4144
return new EventTestFragment();
4245
}

flowlayout/src/main/java/com/zhy/flowlayout/LimitSelectedFragment.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ public class LimitSelectedFragment extends Fragment
2020
private String[] mVals = new String[]
2121
{"Hello", "Android", "Weclome Hi ", "Button", "TextView", "Hello",
2222
"Android", "Weclome", "Button ImageView", "TextView", "Helloworld",
23-
"Android", "Weclome Hello", "Button Text", "TextView"};
23+
"Android", "Weclome Hello", "Button Text", "TextView","Hello", "Android", "Weclome Hi ", "Button", "TextView", "Hello",
24+
"Android", "Weclome", "Button ImageView"};
2425

2526
private TagFlowLayout mFlowLayout;
2627

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
package com.zhy.flowlayout;
2+
3+
import android.os.Bundle;
4+
import android.support.annotation.Nullable;
5+
import android.support.v4.app.Fragment;
6+
import android.view.LayoutInflater;
7+
import android.view.View;
8+
import android.view.ViewGroup;
9+
import android.widget.TextView;
10+
11+
import com.zhy.view.flowlayout.FlowLayout;
12+
import com.zhy.view.flowlayout.TagAdapter;
13+
import com.zhy.view.flowlayout.TagFlowLayout;
14+
15+
import java.util.Set;
16+
17+
/**
18+
* Created by zhy on 15/9/10.
19+
*/
20+
public class ScrollViewTestFragment extends Fragment
21+
{
22+
private String[] mVals = new String[]
23+
{"Hello", "Android", "Weclome Hi ", "Button", "TextView", "Hello",
24+
"Android", "Weclome", "Button ImageView", "TextView", "Helloworld",
25+
"Android", "Weclome Hello", "Button Text", "TextView","Hello", "Android", "Weclome Hi ", "Button", "TextView", "Hello",
26+
"Android", "Weclome", "Button ImageView", "TextView", "Helloworld",
27+
"Android", "Weclome Hello", "Button Text", "TextView","Hello", "Android", "Weclome Hi ", "Button", "TextView", "Hello",
28+
"Android", "Weclome", "Button ImageView", "TextView", "Helloworld",
29+
"Android", "Weclome Hello", "Button Text", "TextView","Hello", "Android", "Weclome Hi ", "Button", "TextView", "Hello",
30+
"Android", "Weclome", "Button ImageView", "TextView", "Helloworld",
31+
"Android", "Weclome Hello", "Button Text", "TextView","Hello", "Android", "Weclome Hi ", "Button", "TextView", "Hello",
32+
"Android", "Weclome", "Button ImageView", "TextView", "Helloworld",
33+
"Android", "Weclome Hello", "Button Text", "TextView","Hello", "Android", "Weclome Hi ", "Button", "TextView", "Hello",
34+
"Android", "Weclome", "Button ImageView", "TextView", "Helloworld",
35+
"Android", "Weclome Hello", "Button Text", "TextView","Hello", "Android", "Weclome Hi ", "Button", "TextView", "Hello",
36+
"Android", "Weclome", "Button ImageView", "TextView", "Helloworld",
37+
"Android", "Weclome Hello", "Button Text", "TextView"};
38+
39+
private TagFlowLayout mFlowLayout;
40+
41+
@Nullable
42+
@Override
43+
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
44+
{
45+
return inflater.inflate(R.layout.activity_main_sc, container, false);
46+
}
47+
48+
@Override
49+
public void onViewCreated(View view, @Nullable Bundle savedInstanceState)
50+
{
51+
final LayoutInflater mInflater = LayoutInflater.from(getActivity());
52+
mFlowLayout = (TagFlowLayout) view.findViewById(R.id.id_flowlayout);
53+
//mFlowLayout.setMaxSelectCount(3);
54+
mFlowLayout.setAdapter(new TagAdapter<String>(mVals)
55+
{
56+
57+
@Override
58+
public View getView(FlowLayout parent, int position, String s)
59+
{
60+
TextView tv = (TextView) mInflater.inflate(R.layout.tv,
61+
mFlowLayout, false);
62+
tv.setText(s);
63+
return tv;
64+
}
65+
});
66+
67+
mFlowLayout.setOnTagClickListener(new TagFlowLayout.OnTagClickListener()
68+
{
69+
@Override
70+
public boolean onTagClick(View view, int position, FlowLayout parent)
71+
{
72+
//Toast.makeText(getActivity(), mVals[position], Toast.LENGTH_SHORT).show();
73+
//view.setVisibility(View.GONE);
74+
return true;
75+
}
76+
});
77+
78+
79+
mFlowLayout.setOnSelectListener(new TagFlowLayout.OnSelectListener()
80+
{
81+
@Override
82+
public void onSelected(Set<Integer> selectPosSet)
83+
{
84+
getActivity().setTitle("choose:" + selectPosSet.toString());
85+
}
86+
});
87+
}
88+
}

flowlayout/src/main/res/drawable/tag_bg.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<selector xmlns:android="http://schemas.android.com/apk/res/android">
3-
<item android:color="@color/tag_select_textcolor"
3+
<item
44
android:drawable="@drawable/checked_bg"
55
android:state_checked="true"></item>
66
<item android:drawable="@drawable/normal_bg"></item>
Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
<RelativeLayout
1+
<LinearLayout
22
xmlns:android="http://schemas.android.com/apk/res/android"
33
xmlns:zhy="http://schemas.android.com/apk/res-auto"
44
android:layout_width="match_parent"
5-
android:layout_height="wrap_content">
5+
android:layout_height="match_parent">
66

77
<com.zhy.view.flowlayout.TagFlowLayout
88
android:id="@+id/id_flowlayout"
9-
zhy:max_select="-1"
109
android:layout_width="fill_parent"
1110
android:layout_height="wrap_content"
12-
android:padding="20dp">
11+
zhy:max_select="-1"
12+
android:padding="20dp"
13+
>
1314
</com.zhy.view.flowlayout.TagFlowLayout>
14-
</RelativeLayout>
15+
</LinearLayout>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<ScrollView
2+
xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:zhy="http://schemas.android.com/apk/res-auto"
4+
android:layout_width="match_parent"
5+
android:layout_height="match_parent">
6+
7+
<com.zhy.view.flowlayout.TagFlowLayout
8+
android:id="@+id/id_flowlayout"
9+
android:layout_width="fill_parent"
10+
android:layout_height="wrap_content"
11+
zhy:max_select="-1"
12+
android:padding="20dp"
13+
>
14+
</com.zhy.view.flowlayout.TagFlowLayout>
15+
</ScrollView>

0 commit comments

Comments
 (0)