继承FlexboxLayout自定义可自动换行的tag标签
实现效果如图:
通过继承自FlexboxLayout实现,Java代码:
package org.test;import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.GradientDrawable;
import android.util.AttributeSet;
import android.widget.LinearLayout;
import android.widget.TextView;import androidx.annotation.NonNull;
import androidx.annotation.Nullable;import com.google.android.flexbox.FlexDirection;
import com.google.android.flexbox.FlexWrap;
import com.google.android.flexbox.FlexboxLayout;
import com.google.android.flexbox.JustifyContent;import java.util.ArrayList;
import java.util.List;public class TagGroup extends FlexboxLayout {private List<String> mTexts;private List<Integer> mColors;private Context mContext;private int TAG_VIEW_COUNT = 0;public TagGroup(Context context, AttributeSet attrs) {super(context, attrs);mContext = context;init();}private void init() {mTexts = new ArrayList<>();mColors = new ArrayList<>();this.setFlexDirection(FlexDirection.ROW);this.setJustifyContent(JustifyContent.FLEX_START);this.setFlexWrap(FlexWrap.WRAP);}public void setTagView(@NonNull List<String> texts, @Nullable List<Integer> colors) {if (texts == null || texts.size() == 0) {throw new RuntimeException("tag view文本字段不能为空");}this.mTexts = texts;TAG_VIEW_COUNT = texts.size();if (colors == null || colors.size() == 0) {for (int i = 0; i < TAG_VIEW_COUNT; i++) {mColors.clear();mColors.add(Color.WHITE);}} else {this.mColors = colors;}this.removeAllViews();for (int i = 0; i < TAG_VIEW_COUNT; i++) {TextView textView = makeTextView(mTexts.get(i), mColors.get(i));LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);//设置每一个子View在整体布局中与其他子View的上下左右的marginlayoutParams.setMargins(0, 1, 5, 1);this.addView(textView, layoutParams);}this.invalidate();}//绘制圆角描边的TextViewprivate TextView makeTextView(String s, Integer c) {TextView textView = new TextView(mContext);textView.setText(s);textView.setPadding(10, 5, 10, 5);int strokeWidth = 5; // 5pxint roundRadius = 15; // 15pxint strokeColor = Color.GRAY;int fillColor = c;GradientDrawable gd = new GradientDrawable();gd.setColor(fillColor);gd.setCornerRadius(roundRadius);gd.setStroke(strokeWidth, strokeColor);textView.setBackground(gd);return textView;}
}
使用方式,把TagGroup当作一个普通布局使用,写入xml布局:
<org.test.TagGroupandroid:id="@+id/tag_group"android:layout_width="match_parent"android:layout_height="wrap_content" />
然后在上层,通过set方式,添加子tag标签实现:
TagGroup tagGroup = findViewById(R.id.tag_group);List<String> texts = Arrays.asList("zhang", "phil", "csdn", "android", "zhang", "phil", "csdn", "android", "zhang", "phil", "csdn", "android");List<Integer> colors = Arrays.asList(Color.RED, Color.DKGRAY, Color.BLUE, Color.RED, Color.DKGRAY, Color.BLUE, Color.RED, Color.DKGRAY, Color.BLUE, Color.RED, Color.DKGRAY, Color.BLUE);tagGroup.setTagView(texts, colors);
继承FlexboxLayout自定义可自动换行的tag标签相关推荐
- OneNav一为主题魔改教程(四):自定义网址内容页的Tag标签到任意位置--洞五洞洞幺
今日主题: 自定义网址内容页的Tag标签到任意位置 声明:本篇有违"魔改"这个标题:修改之前做好笔记或备份. 在原WebStackPro的版本中, 内容页中的Tag标签块紧帖着简介 ...
- Spring自定义tag标签及使用
tag文件和jsp很相似,也有不同,tag文件只是以tag为后缀名的文本文件.除了jsp页面指令外,其他jsp元素都可以出现在tag文件中.jsp的指令有include,taglib和page,但ta ...
- elementUI table自定义表头弹框搜索,排序,显示tag标签
elementUI table自定义表头弹框搜索,排序,显示tag标签 允许一种排序,多种搜索条件 包括三种类别,添加了solt插槽,也可以自定义: 输入框[input] 多选[checkbox] 范 ...
- 自定义添加关键词Tag标签jquery插件
下载地址 一款点击添加关键词Tag标签jquery插件,此款jquery插件不仅可以自定义输入关键词标签,还可以展开选择已有关键词标签,当关键词标签内容比较多时可以点击换一换来切换下一页 dd:
- html 自定义标签 seo,wordpress深层seo优化:自定义栏目和tag标签页面title标题
seo注重整站优化,也就是希望网站每个页面都参与进来,每个页面都有不同的title标题不重复.对于wordpress默认设置来说,这个基本上是ok的,不需要怎么折腾.但碰到一个问题是:网站栏目及标签页 ...
- 自定义TAG标签页面聚合
TAG标签是一种由用户自己定义的,比分类更准确.更具体,可以概括文章主要内容的关键词,TAG标签一般出现在我们首页的侧栏中,将我们已经有排名的网页通过TAG标签进行聚合,可以提高页面的权重,通过超链接 ...
- Kotlin 第一弹:自定义 ViewGroup 实现流式标签控件
古人学问无遗力, 少壮工夫老始成.纸上得来终觉浅, 绝知此事要躬行. – 陆游 <冬夜读书示子聿> 上周 Google I/O 大会的召开,宣布了 Kotlin 语言正式成为了官方开发语言 ...
- 针对CMS中的tag标签理解
针对CMS的tag标签有以下解释: 什么tag标签? TAG标签是一种由自定义的一种标签,要比分类更加的准确,可以概括文章主要内容的关键词. 运用TAG标签,可以使网站的文章更容易被搜索引擎检索到.百 ...
- 标签系统mysql设计_关于tag标签系统的实现
实验室的项目,需要做对用户发布的主题进行打标签的功能,纠结甚久,实现思路如下: 一.数据库表的设计 1.tag表 create table qa_tag ( tag_id int primary ke ...
最新文章
- 安徽师范大学信息计算机学院,安徽师范大学数学计算机科学学院导师介绍:罗永龙...
- 【NLP_Stanford课堂】正则表达式
- java课程总结_java课程总结报告.doc
- 孤傲授权系统网站源码
- 软件工程需求分析文档模板
- Extjs4.1.1视频教程下载
- 联想U310刷白名单更换无线网卡纪实
- 知识竞赛软件/答题系统/答题小程序
- java 间接引用_Java中的四种引用方式的区别
- Bootstrap系列之工具提示框(Tooltips)
- 摘 :史丰收快速计算法的口诀及其简单应用方法(部分)
- fastlane二开java_Fastlane 使用手册(二)
- 文明5 java 英_文明5模组“Future Worlds”(未来世界)中英版补丁
- contest3 CF994 div2 ooxxx? oooox? ooooo?
- 三层交换 VLAN 互访配置
- Kali Linux实战:如何一下看出Windows计算机是否开启445危险端口?是否存在永恒之蓝漏洞?
- 智慧城市建设中 网络安全攻防战如何打赢?
- 成都物韵电子商务有限公司推广网店需要注意什么?
- 第一天:django+vue项目立项
- [欣赏]——天长地久