1. 简介
chipgroup 是 material 组件中用于承载多个 chip 的容器,适合以下场景:
- 标签展示(不可点击)
- 条件筛选(单选/多选)
- 动态标签列表(如识别结果、关键词等)
在当前项目中,chipgroup 用于“识别结果标签列表”的展示,并配合 recyclerview 实现“折叠/展开”效果。
2. 依赖要求
项目已包含依赖:
implementation 'com.google.android.material:material:1.9.0'
3. 基础 xml 用法
<com.google.android.material.chip.chipgroup
android: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(展示型)
适用于识别结果、标签云等动态数据场景。
private fun renderchips(chipgroup: chipgroup, tags: list<string>) {
chipgroup.removeallviews()
val showtags = if (tags.isempty()) listof("无") else tags
showtags.foreach { tag ->
val chip = chip(chipgroup.context).apply {
text = "\u2022 $tag"
isclickable = false
ischeckable = false
closeicon = null
chipstartpadding = 10f
chipendpadding = 10f
settextcolor(0xffbfc9ea.toint())
textsize = 13f
setchipbackgroundcolorresource(android.r.color.transparent)
setbackgroundresource(r.drawable.bg_tag_chip)
}
chipgroup.addview(chip)
}
}注意事项
- recyclerview item 复用时必须先调用
removeallviews(),避免重复叠加。 - 展示型场景建议设置
isclickable=false、ischeckable=false。
5. 单选/多选筛选用法
如果用于筛选功能,可开启可选中状态:
<com.google.android.material.chip.chipgroup
android:id="@+id/chip_group_filter"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:singleselection="true"
app:selectionrequired="true" />
val chip = chip(context).apply {
id = view.generateviewid()
text = "前方"
ischeckable = true
}
chipgroup.addview(chip)
chipgroup.setoncheckedstatechangelistener { _, checkedids ->
// checkedids: 当前选中的 chip id 列表
}6. 折叠/展开场景实现建议
当标签数量较多时,建议在 adapter 中控制:
- 设置折叠阈值(如 3 个)
- 折叠态仅显示前 n 个标签
- 超过阈值显示箭头按钮
- 点击箭头切换
expanded状态并notifyitemchanged(position)
示例逻辑:
val canexpand = item.tags.size > collapsedvisiblecount
val visibletags = if (item.expanded || !canexpand) {
item.tags
} else {
item.tags.take(collapsedvisiblecount)
}
renderchips(binding.chipgroup, visibletags)7. 性能建议
- 避免在高频回调中无条件重建全部 chip。
- 先比较新旧数据,只有变化时再刷新 item。
- 可结合节流(throttle)降低 ui 更新频率。
- 极大数据量时可考虑将标签改为文本聚合展示,降低 view 数量。
到此这篇关于android chipgroup 简介及使用说明的文章就介绍到这了,更多相关android chipgroup 使用内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论