广告
返回顶部
首页 > 资讯 > 精选 >Android ChipGroup收起折叠效果怎么实现
  • 820
分享到

Android ChipGroup收起折叠效果怎么实现

2023-07-04 15:07:12 820人浏览 八月长安
摘要

这篇文章主要介绍“Android ChipGroup收起折叠效果怎么实现”,在日常操作中,相信很多人在Android ChipGroup收起折叠效果怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希

这篇文章主要介绍“Android ChipGroup收起折叠效果怎么实现”,在日常操作中,相信很多人在Android ChipGroup收起折叠效果怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android ChipGroup收起折叠效果怎么实现”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

一、先上效果图

借用某东App的效果,如下。

折叠时的效果:

Android ChipGroup收起折叠效果怎么实现

展开时的效果:

Android ChipGroup收起折叠效果怎么实现

二、ChipGroup和Chip

chipGroup和chip之前写过博客,可移步Android Material 常用组件,看关于chip和chipGroup的部分,建议一定要看,因为里面还挺多坑的。这里简单贴下chip和chipGroup的代码:

ChipGroup:

<com.Google.android.material.chip.ChipGroup    android:id="@+id/chip_group"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:layout_marginTop="@dimen/size_15dp"    app:chipSpacingHorizontal="@dimen/size_9dp"    app:chipSpacingVertical="@dimen/size_8dp"    app:singleSelection="true" />

Chip: 需要定义三种Chip的布局:箭头朝上的、箭头朝下的、普通展示文字的,如果能复用定义一种也行,这里简单贴一种:

<?xml version="1.0" encoding="utf-8"?><com.google.android.material.chip.Chip xmlns:android="Http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    android:id="@+id/chip"        android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:textColor="@color/login_model"    android:textSize="@dimen/font_12sp"    android:theme="@style/Theme.MaterialComponents"    app:checkedIconVisible="false"    app:chipBackgroundColor="@color/printer_unused_reason"    app:chipMinHeight="@dimen/size_24dp"    app:chipMinTouchTargetSize="0dp" />

三、在ChipGroup中动态添加Chip

这个比较简单,inflate后add即可,如下:

//添加Chipfor (index in 0 until size) {    val chip = layoutInflater.inflate(            R.layout.common_chip_end,            mViewBind.chipGroup,            false) as Chip    chip.text = mWordList[index]    //动态添加ID    chip.id = index    mViewBind.chipGroup.addView(chip)}

四、找到每个Chip位于的行数

这个需求一般会要求显示固定的行数(比如效果图中某东App的二行),然后显示有向下箭头的Chip,点击后可以展开,那么如何找到固定行数最后一行的最后一个Chip呢? 不用担心ChipGruop(的父类)有给我们提供api

public int getRowIndex(@NonNull View child) {  Object index = child.getTag(R.id.row_index_key);  if (!(index instanceof Integer)) {    return -1;  }  return (int) index;}

于是当我们将添加到ChipGroup的Chip调用该Api后就知道每个Chip位于哪一行了。

五、实现思路

我们已经找到每个Chip位于第几行,自然我们就知道固定行数的最后一行的最后一个Chip是谁,我们替换该Chip为向下箭头的Chip就可以完成折叠的效果。

展开的效果就很简单了,加上向上箭头的Chip即可。

六、需要注意的问题

1、Chip的复用问题

很遗憾,chip不能复用,每次展开和折叠都会先清除ChipGroup中的Chip然后再添加,如果边清除边添加同一个Chip就会报错,所以清除所有Chip后还是要用inflate重新创建新的Chip。

//清除mViewBind.chipGroup.removeAllViews()//重新inflateval chip = layoutInflater.inflate(            R.layout.common_chip_end,            mViewBind.chipGroup,            false) as Chip//添加mViewBind.chipGroup.addView(endChip)

2、Chip的ID设置

如果在for循环中添加chip,可以直接用Chip的数据源的索引(要展示的文本集合的索引),这样我们获取Chip的内容就很简单。如果是一些特殊的Chip,我们可以单独inflate单独添加,单独设置ID,比如向上向下箭头的Chip。

//设置箭头的IDarrowUpChip.id = ARROW_UP_CHIP_IDarrowDownChip.id = ARROW_DOWN_CHIP_ID//处理Chip的点击事件mViewBind.chipGroup.setOnCheckedChangeListener { group, checkedId ->    //记录点击的ID    mClickChipId = if (checkedId > -1) checkedId else mClickChipId    when (mClickChipId) {        ARROW_DOWN_CHIP_ID -> {  //箭头向下的Chip的点击            enlargeChipList(true)        }        ARROW_UP_CHIP_ID -> {    //箭头向上的Chip的点击            enlargeChipList(false)        }        else -> {   //其他            val text = mWordList[mClickChipId]        }    }}

3、点击同一个Chip返回的ID为-1的问题

ChipGroup有个坑就是重复点击同一个Chip,第一次返回的Chip的ID正常,后面返回的Chip的ID都是-1,所以需要记录首次点击的Chip的ID,如果你发现返回的ID为-1,那么就是用户点击了上次的Chip,这一点要注意。

//记录点击的IDmClickChipId = if (checkedId &gt; -1) id else mClickChipId

总结: 这个重要的是实现思路,核心代码也贴出来了,理解了实现起来就不难。

到此,关于“Android ChipGroup收起折叠效果怎么实现”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Android ChipGroup收起折叠效果怎么实现

本文链接: https://www.lsjlt.com/news/346228.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android ChipGroup收起折叠效果怎么实现
    这篇文章主要介绍“Android ChipGroup收起折叠效果怎么实现”,在日常操作中,相信很多人在Android ChipGroup收起折叠效果怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希...
    99+
    2023-07-04
  • 纯css怎样实现多级折叠菜单折叠树效果
    这篇文章将为大家详细讲解有关纯css怎样实现多级折叠菜单折叠树效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。运用checkbox的checked值来判断下级栏目是否展开,CSS3的选择器中提供了:ch...
    99+
    2023-06-08
  • Android TextView实现多文本折叠、展开效果
    背景在开发过程中,当我们的需求中包含说说或者评论等内容的展示时,我们都会考虑当内容太多时该如何显示。当内容的字数太多,如果全部展示出来可能会影响体验效果,但是又不能只截取一部分内容进行展示,此时就需要考虑使用多行显示折叠的效果来实现。效果图...
    99+
    2023-05-31
    android textview roi
  • Android UI实现多行文本折叠展开效果
    上文介绍了单行文本水平触摸滑动效果,通过EditText实现TextView单行长文本水平滑动效果。 本文继续介绍了多行文本折叠展开,自定义布局View实现多行文本折叠和展开 ...
    99+
    2022-06-06
    Android
  • Android中RecyclerView实现多级折叠列表效果(二)
    前言在本文开始之前请大家先看一下这篇文章:https://www.jb51.net/article/113510.htm上面的这篇文章是之前写的,里面发现有很多不好用地方,也学到些新姿势,改动了许多地方。下面来看看详细的介绍:要点:&nbs...
    99+
    2023-05-31
    android recyclerview 多级列表
  • Android中RecyclerView实现多级折叠列表效果(TreeRecyclerView)
    前言首先不得不吐槽一下产品,尼玛为啥要搞这样的功能....搞个两级的不就好了嘛...自带控件,多好。三级,四级,听说还有六级的....这样丧心病狂的设计,后台也不好给数据吧。先看看效果:两级的效果:三级的效果:全部展开的效果(我只写了五级)...
    99+
    2023-05-31
    android recyclerview 多级列表
  • 怎么用jQuery实现ASP.NET GridView折叠伸展效果
    这篇文章主要讲解了“怎么用jQuery实现ASP.NET GridView折叠伸展效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用jQuery实现ASP.NET GridView折叠...
    99+
    2023-06-17
  • android项目中如何实现给RecyclerView加上折叠效果
    android项目中如何实现给RecyclerView加上折叠效果?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。效果总结一下这个列表的特点,就是以下三点: 重...
    99+
    2023-05-31
    recyclerview android recycle
  • 一文搞懂Android RecyclerView点击展开、折叠效果的实现代码
    RecyclerView是什么        RecycleView是Android5.0后谷歌推出的一个用于在有限的窗...
    99+
    2022-11-12
  • CSS3怎么实现折角效果
    这篇“CSS3怎么实现折角效果”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“CSS3怎么实现折角效果”文章吧。<!DO...
    99+
    2023-07-04
  • 大数据中分组报表怎样实现折叠伸缩效果
    这篇文章将为大家详细讲解有关大数据中分组报表怎样实现折叠伸缩效果,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在业务系统中分组统计是比较常见的数据分析形式,但当数据项较多,或分组的层级过多时...
    99+
    2023-06-04
  • html5怎么实现菜单折纸效果
    本篇内容主要讲解“html5怎么实现菜单折纸效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“html5怎么实现菜单折纸效果”吧!类似猎豹浏览器安装时的用户须知...
    99+
    2022-10-19
  • android gallery3D效果怎么实现
    要实现Android中的Gallery3D效果,可以使用ViewPager和自定义的PagerTransformer来实现。首先,需...
    99+
    2023-08-31
    android
  • Android怎么实现阴影效果
    这篇文章主要介绍了Android怎么实现阴影效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android怎么实现阴影效果文章都会有所收获,下面我们一起来看看吧。实现形式elevationMaterial D...
    99+
    2023-07-02
  • 使用CSS3怎么实现一个文字折纸效果
    这期内容当中小编将会给大家带来有关使用CSS3怎么实现一个文字折纸效果,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。<!DOCTYPE html><html><he...
    99+
    2023-06-08
  • Android开发中怎么实现一个全文收起功能
    这期内容当中小编将会给大家带来有关Android开发中怎么实现一个全文收起功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。首先写一个布局,这个布局是每个子项的布局 item_text_list.xml&...
    99+
    2023-05-31
    android roi
  • CSS怎么实现响应式堆叠卡片悬停效果
    本篇内容介绍了“CSS怎么实现响应式堆叠卡片悬停效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在开始之...
    99+
    2022-10-19
  • Android悬浮窗效果怎么实现
    要实现Android的悬浮窗效果,可以采用以下几种方法: 使用系统提供的WindowManager类来创建一个悬浮窗口。可以通过...
    99+
    2023-10-22
    Android
  • android预加载效果怎么实现
    实现Android预加载效果可以使用以下几种方法:1. 使用AsyncTask:在Activity或Fragment中创建一个Asy...
    99+
    2023-08-17
    android
  • Android怎么实现ImageView的selector效果
    这篇“Android怎么实现ImageView的selector效果”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Andro...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作