Android中使用TagFlowLayout制作动态添加删除标签

发布时间 - 2026-01-11 02:26:30    点击率:

效果图

简单的效果图(使用开源库)[FlowLayout](“ https://github.com/hongyangAndroid/FlowLayout “)

步骤

导包

compile 'com.zhy:flowlayout-lib:1.0.3'
<com.zhy.view.flowlayout.TagFlowLayout
  android:id="@+id/id_flowlayout"
  zhy:max_select="-1"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:padding="20dp">
</com.zhy.view.flowlayout.TagFlowLayout>

初始化数据

private String[] mVals = new String[]
    {"Hello", "Android", "Weclome Hi ", "Button", "TextView", "Hello",
        "Android", "Weclome", "Button ImageView", "TextView", "Helloworld" };
 arrTab = new ArrayList();
  //添加一条数据用于添加标签的替换
  arrTab.add("tab");

设置TagFlowLayout的adapter

//设置adapter
  adapter = new TagAdapter<String>(arrTab){
    @Override
    public View getView(FlowLayout parent, final int position, String s) {
      System.out.println(position + "---" + (arrTab.size() - 1));
      if (position == arrTab.size() - 1){
        //设置最后一个添加标签的布局
        LinearLayout iv = (LinearLayout) LayoutInflater.from(SecondActivity.this).inflate( R.layout.iv,
            mFlowLayout,false);
        //如果点击就添加元素并刷新adapter
        iv.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
            int i = arrTab.size() - 1;
            //将新加入的数据加到集合的最后一个位置,而原来的添加图标会到 +1 的位置 
            arrTab.add(i , mVals[position]);
            adapter.notifyDataChanged();
          }
        });
        return iv ;
      }else{
      //正常标签的布局
        RelativeLayout tv = (RelativeLayout) LayoutInflater.from(SecondActivity.this).inflate( R.layout.tv,
            mFlowLayout,false);
        TextView viewById = (TextView) tv.findViewById(R.id.tv_name);
        viewById.setText(s);
        ImageView imageView = (ImageView) tv.findViewById(R.id.iv_delete);
        imageView.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
            arrTab.remove(position);
            System.out.println("我点击的是" + position);
            adapter.notifyDataChanged();
          }
        });
        return tv;
      }
    }
  };
  mFlowLayout.setAdapter(adapter);

各种布局文件

iv
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="88dp"
android:paddingTop="5dp"
android:layout_height="40dp">
<ImageView
  android:layout_gravity="center"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:background="@drawable/bacs_btn_addbq"
  />
  </LinearLayout>
tv
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="88dp"
android:layout_height="wrap_content">
<!--android:background="@drawable/tag_bg"-->
<TextView
  android:id="@+id/tv_name"
  android:layout_marginTop="7dp"
   android:layout_width="80dp"
  android:gravity="center"
   android:layout_height="32dp"
  android:background="@drawable/bg_tv"
   android:text="我是唯爱"
  android:textSize="13sp"
   android:textColor="#FFF">
</TextView>
<ImageView
  android:id="@+id/iv_delete"
  android:layout_alignParentRight="true"
  android:layout_width="15dp"
  android:layout_height="15dp"
  android:src="@drawable/sm_ico_sounddel"
  />
</RelativeLayout>

以上所述是小编给大家介绍的Android中使用TagFlowLayout制作动态添加删除标签,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# tagflowlayout  # 动态添加删除标签  # android  # Kotlin + Flow 实现Android 应用初始化任务启动库  # 如何造个android Flow流式响应的轮子  # Android控件FlowLikeView实现点赞动画  # Android流式布局FlowLayout详解  # Android Kotlin Flow 冷热流详解  # 小编  # 的是  # 我是  # 在此  # 给大家  # 所述  # 给我留言  # 开源  # 感谢大家  # 疑问请  # 有任何  # lt  # view 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何破解联通资金短缺导致的基站建设难题?  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  Python结构化数据采集_字段抽取解析【教程】  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  微信小程序 闭包写法详细介绍  想要更高端的建设网站,这些原则一定要坚持!  如何自定义建站之星网站的导航菜单样式?  香港服务器选型指南:免备案配置与高效建站方案解析  Laravel如何使用Eloquent进行子查询  Laravel怎么为数据库表字段添加索引以优化查询  Android中AutoCompleteTextView自动提示  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  Laravel怎么使用artisan命令缓存配置和视图  javascript中闭包概念与用法深入理解  如何在IIS7上新建站点并设置安全权限?  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  如何在Windows服务器上快速搭建网站?  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  如何在腾讯云服务器上快速搭建个人网站?  微信小程序 配置文件详细介绍  bing浏览器学术搜索入口_bing学术文献检索地址  公司门户网站制作流程,华为官网怎么做?  Laravel怎么在Blade中安全地输出原始HTML内容  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  Laravel怎么使用Intervention Image库处理图片上传和缩放  Laravel如何实现API资源集合?(Resource Collection教程)  Laravel如何实现用户注册和登录?(Auth脚手架指南)  详解jQuery中基本的动画方法  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  如何在橙子建站上传落地页?操作指南详解  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  制作企业网站建设方案,怎样建设一个公司网站?  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  浅述节点的创建及常见功能的实现  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  米侠浏览器网页背景异常怎么办 米侠显示修复  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  Laravel PHP版本要求一览_Laravel各版本环境要求对照