项目作者: hymanme

项目描述 :
支持多选的自定义标签View,可展开收起,标签样式可自定义。
高级语言: Java
项目地址: git://github.com/hymanme/TagFlowLayout.git
创建时间: 2016-09-04T13:46:27Z
项目社区:https://github.com/hymanme/TagFlowLayout

开源协议:Apache License 2.0

下载


TagFlowLayout

单选,多选,多行展开缩回,tag高度自定义
GIF图演示,请戳我

tagFlowLayout2

How to use

Add this to your build.gradle:

  1. dependencies {
  2. compile 'com.github.hymanme.tagflowlayout:tagflowlayout:0.3.0'
  3. }

1. 定义xml布局

  1. <com.github.hymanme.tagflowlayout.TagFlowLayout
  2. android:id="@+id/tag_flow_layout"
  3. android:layout_width="match_parent"
  4. android:layout_height="wrap_content"
  5. android:layout_marginTop="8dp"
  6. app:expandHint="查看更多"
  7. app:foldHint="点击缩回">

2. 初始化

  1. mTagFlowLayout = (TagFlowLayout) findViewById(R.id.tag_flow_layout);
  2. mTagFlowLayout.setTitle("大家都不想搜");
  3. mTagFlowLayout.setTitleTextColor(getResources().getColor(R.color.colorPrimaryDark)
  4. mTagFlowLayout.setTitleTextSize(12);
  5. //最小显示高度(单位dp)
  6. mTagFlowLayout.setMinVisibleHeight(100);
  7. //最大显示高度(单位dp)
  8. mTagFlowLayout.setMaxVisibleHeight(400);
  9. mTagFlowLayout.setAnimationDuration(600);
  10. //设置背景颜色
  11. mTagFlowLayout.setBackGroundColor(getResources().getColor(R.color.primary_text));

3. 设置adapter和监听,最好先设置监听后设置adapter

  1. //设置监听(单击和长按事件)
  2. mTagFlowLayout.setTagListener(new OnTagClickListener() {
  3. @Override
  4. public void onClick(TagFlowLayout parent, View view, int position) {
  5. Toast.makeText(MainActivity.this, "click==" + ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
  6. }
  7. @Override
  8. public void onLongClick(TagFlowLayout parent, View view, int position) {
  9. Toast.makeText(MainActivity.this, "long click==" + ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
  10. }
  11. });
  12. //设置adapter
  13. MyTagAdapter tagAdapter = new MyTagAdapter();
  14. mTagFlowLayout.setTagAdapter(tagAdapter);
  15. //给adapter绑定数据
  16. tagAdapter.addAllTags(tagBeans);
  17. //自定义Adapter:MyTagAdapter,其中TagBean为泛型类,即每一个tag的实体类
  18. //在getView()里面自定义tag标签的样式
  19. //默认提供了两个实例tag:DefaultTagView,ColorfulTagView
  20. //DefaultTagView:默认tag
  21. //ColorfulTagView:彩色的tag
  22. //当然还可以自己自定义
  23. class MyTagAdapter extends TagAdapter<TagBean> {
  24. @Override
  25. public View getView(int position, View convertView, ViewGroup parent) {
  26. //定制tag的样式,包括背景颜色,点击时背景颜色,背景形状等
  27. DefaultTagView textView = new ColorfulTagView(MainActivity.this);
  28. textView.setText(((TagBean) getItem(position)).getName());
  29. return textView;
  30. }
  31. }

默认tag样式

  1. DefaultTagView (默认实心tag)
  2. ColorfulTagView (彩色背景实心tag)
  3. StrokeTagView (空心带边框的tag)
  4. ColorfulStrokeTagView (空心彩色边框tag)
  5. 自定义tag,继承以上tag或者自定义View

muti_tags

可选项(部分属性可直接在xml布局中指定)

  1. //标题
  2. private String title;
  3. //展开后显示的提示文字
  4. private String foldHint;
  5. //折叠起来后显示的提示文字
  6. private String expandHint;
  7. //标题文字颜色
  8. private int titleTextColor;
  9. //控件背景颜色
  10. private int backGroundColor;
  11. //查看更多文字颜色
  12. private int hintTextColor;
  13. //分割线颜色
  14. private int dividerColor;
  15. //标签之间的横向间距
  16. private int tagsHorizontalSpace;
  17. //标签之间的纵向间距
  18. private int tagsVerticalSpace;
  19. //查看更多前面显示的小图标
  20. private Drawable indicateImage;
  21. //内容区域最少显示高度(px)
  22. private int minVisibleHeight;
  23. //内容区域最大显示高度
  24. private int maxVisibleHeight;
  25. //标题字体大小(单位sp)
  26. private float titleTextSize;
  27. //提示字体大小
  28. private float hintTextSize;
  29. //展开和折叠动画持续时间
  30. private int animationDuration;
  31. //点击监听事件
  32. private OnTagClickListener mListener;
  33. //设置adapter
  34. private TagAdapter mTagAdapter;