news 2026/9/11 1:59:35

Android ChipGroup 使用说明

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Android ChipGroup 使用说明

ChipGroup 使用文档

1. 简介

ChipGroup是 Material 组件中用于承载多个Chip的容器,适合以下场景:

  • 标签展示(不可点击)
  • 条件筛选(单选/多选)
  • 动态标签列表(如识别结果、关键词等)

在当前项目中,ChipGroup用于“识别结果标签列表”的展示,并配合 RecyclerView 实现“折叠/展开”效果。


2. 依赖要求

项目已包含依赖:

implementation 'com.google.android.material:material:1.9.0'

3. 基础 XML 用法

<com.google.android.material.chip.ChipGroupandroid:id="@+id/chip_group"android:layout_width="match_parent"android:layout_height="wrap_content"app:singleLine="false"app:chipSpacingHorizontal="6dp"app:chipSpacingVertical="6dp"/>

常用属性

  • app:singleLine:是否单行显示,false表示自动换行
  • app:chipSpacingHorizontal:横向间距
  • app:chipSpacingVertical:纵向间距
  • app:singleSelection:是否单选模式
  • app:selectionRequired:单选时是否要求必须有一个选中项

4. 动态添加 Chip(展示型)

适用于识别结果、标签云等动态数据场景。

privatefunrenderChips(chipGroup:ChipGroup,tags:List<String>){chipGroup.removeAllViews()valshowTags=if(tags.isEmpty())listOf("无")elsetags showTags.forEach{tag->valchip=Chip(chipGroup.context).apply{text="\u2022$tag"isClickable=falseisCheckable=falsecloseIcon=nullchipStartPadding=10fchipEndPadding=10fsetTextColor(0xFFBFC9EA.toInt())textSize=13fsetChipBackgroundColorResource(android.R.color.transparent)setBackgroundResource(R.drawable.bg_tag_chip)}chipGroup.addView(chip)}}

注意事项

  • RecyclerView item 复用时必须先调用removeAllViews(),避免重复叠加。
  • 展示型场景建议设置isClickable=falseisCheckable=false

5. 单选/多选筛选用法

如果用于筛选功能,可开启可选中状态:

<com.google.android.material.chip.ChipGroupandroid:id="@+id/chip_group_filter"android:layout_width="match_parent"android:layout_height="wrap_content"app:singleSelection="true"app:selectionRequired="true"/>
valchip=Chip(context).apply{id=View.generateViewId()text="前方"isCheckable=true}chipGroup.addView(chip)chipGroup.setOnCheckedStateChangeListener{_,checkedIds->// checkedIds: 当前选中的 Chip id 列表}

6. 折叠/展开场景实现建议

当标签数量较多时,建议在 Adapter 中控制:

  1. 设置折叠阈值(如 3 个)
  2. 折叠态仅显示前 N 个标签
  3. 超过阈值显示箭头按钮
  4. 点击箭头切换expanded状态并notifyItemChanged(position)

示例逻辑:

valcanExpand=item.tags.size>collapsedVisibleCountvalvisibleTags=if(item.expanded||!canExpand){item.tags}else{item.tags.take(collapsedVisibleCount)}renderChips(binding.chipGroup,visibleTags)

7. 性能建议

  • 避免在高频回调中无条件重建全部 Chip。
  • 先比较新旧数据,只有变化时再刷新 item。
  • 可结合节流(throttle)降低 UI 更新频率。
  • 极大数据量时可考虑将标签改为文本聚合展示,降低 View 数量。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 1:57:06

TypeScript中any、unknown、never的区别与应用指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 1:56:04

Kubernetes生产环境OOM排查与防护实战指南

1. Kubernetes生产环境OOM告警全链路排查与防护实战最近在维护一个日均请求量超过2000万的Kubernetes生产集群时&#xff0c;频繁遇到容器因OOM&#xff08;Out Of Memory&#xff09;被终止的情况。这类问题不仅影响服务稳定性&#xff0c;还会触发级联故障。经过三周的深度排…

作者头像 李华
网站建设 2026/9/11 1:54:27

人力资源管理系统源码解析:从数据库SQL到Java后端实现

简介&#xff1a;一份面向Java Web学习者和毕业设计者的完整人力资源管理系统资料包&#xff0c;围绕员工信息、招聘、绩效、薪酬等常见人事业务&#xff0c;将源代码、数据库脚本和论文整合在一起&#xff0c;可用来理解企业级Web项目的开发全流程。RAR压缩包内共778个文件&am…

作者头像 李华
网站建设 2026/9/11 1:51:24

C++项目中嵌入式数据库选型与集成实践

1. 嵌入式数据库C集成概述 在C项目中集成嵌入式数据库是许多本地化应用开发的核心需求。不同于传统客户端-服务器架构的数据库系统&#xff0c;嵌入式数据库直接运行在应用程序进程内&#xff0c;无需独立的数据库服务进程。这种架构特别适合需要轻量级数据存储、快速读写访问和…

作者头像 李华
网站建设 2026/9/11 1:49:08

CMake核心知识梳理:从跨平台构建到高效配置实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华