当前位置: 代码网 > it编程>App开发>Android > Android ChipGroup 简介及使用说明

Android ChipGroup 简介及使用说明

2026年09月16日 Android 我要评论
1. 简介chipgroup 是 material 组件中用于承载多个 chip 的容器,适合以下场景:标签展示(不可点击)条件筛选(单选/多选)动态标签列表(如识别结果、关键词等)在当前项目中,ch

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=falseischeckable=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 中控制:

  1. 设置折叠阈值(如 3 个)
  2. 折叠态仅显示前 n 个标签
  3. 超过阈值显示箭头按钮
  4. 点击箭头切换 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 使用内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com