Android更多条目收缩展开控件ExpandView的示例代码
作者:wkp111 发布时间:2022-07-31 18:10:24
标签:android,展开控件
在Android开发中,我们经常使用列表控件,而有时候列表控件条目中又会是多条目数据,这时候,我们无法确定每个条目的数据多少,而为了美观,我们就希望条目统一高度,多数据的条目能够进行折叠、展开。今天,就为大家介绍一个这样的自定义控件 ExpandView 。
效果演示图
演示图
Android Studio集成方式
dependencies{
compile 'com.wkp:ExpandView:1.0.4'
//Android Studio3.0+可用以下方式
//implementation 'com.wkp:ExpandView:1.0.4'
}
使用详解
1.属性讲解
<!--每行字段数-->
<attr name="wkp_column" format="integer"/>
<!--最少显示行数-->
<attr name="wkp_rowMin" format="integer"/>
<!--条目间距-->
<attr name="wkp_space" format="dimension"/>
<!--条目动画时长,0为无动画-->
<attr name="wkp_itemDuration" format="integer"/>
<!--条目高度-->
<attr name="wkp_itemHeight" format="dimension"/>
<!--“更多”按钮图片-->
<attr name="wkp_moreButtonImg" format="reference"/>
<!--“更多”按钮文本-->
<attr name="wkp_moreButtonText" format="string"/>
<!--显示文本模式时的条目背景色-->
<attr name="wkp_textBgColor" format="color"/>
<!--显示文本模式时的条目文本颜色-->
<attr name="wkp_textColor" format="color"/>
<!--显示文本模式时的文本大小-->
<attr name="wkp_textSize" format="dimension"/>
<!--显示文本模式时的条目背景图-->
<attr name="wkp_textBgRes" format="reference"/>
2.布局示例
图1布局
<com.wkp.expandview_lib.view.ExpandView
app:wkp_textSize="@dimen/size_16sp"
app:wkp_column="3"
app:wkp_rowMin="3"
app:wkp_itemHeight="120dp"
app:wkp_textBgRes="@drawable/text_bg"
android:id="@+id/ev"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</com.wkp.expandview_lib.view.ExpandView>
图2布局
<com.wkp.expandview_lib.view.ExpandView
app:wkp_textSize="@dimen/size_16sp"
app:wkp_column="4"
app:wkp_rowMin="2"
app:wkp_itemHeight="120dp"
app:wkp_textBgRes="@drawable/text_bg"
android:id="@+id/ev"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</com.wkp.expandview_lib.view.ExpandView>
3.代码示例
public class MainActivity extends AppCompatActivity {
private static final String[] items = {"雨水滴在我的外套", "已找到", "每分每秒", "来啊,互相伤害啊", "等你到天涯海角", "遇见了你才知道你对我多重要",
"123", "456", "789", "abc", "def", "收起"};
private static final String[] items1 = {"雨水滴在我的外套1", "已找到1", "每分每秒1", "来啊,互相伤害啊1", "等你到天涯海角1", "遇见了你才知道你对我多重要1",
"123", "456", "789", "abc1", "def1", "收起1"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ExpandView expandView = (ExpandView) findViewById(R.id.ev);
//设置数据
expandView.setTextItems(items);
//测试当在ListView中条目复用问题
expandView.setTextItems(items1);
//测试未展开下调用收起的效果
expandView.packUpItems();
//条目点击监听
expandView.setOnItemClickListener(new ExpandView.OnItemClickListener() {
@Override
public void onItemClick(View view, ViewGroup parent, int position) {
if (position == items.length - 1) {
//收起隐藏条目
expandView.packUpItems();
}
}
});
}
}
结语
控件支持直接代码创建,还有更多API请观看 ExpandView.java 内的注释说明。
github地址:https://github.com/wkp111/ExpandView
来源:https://www.jianshu.com/p/9ddbfed4c454


猜你喜欢
- 1. maven插件介绍springboot应用通过maven插件appassembler-maven-plugi生成启动脚本bat和sh。
- 本文实例为大家分享了C#实现学生档案查询的具体代码,供大家参考,具体内容如下using System;using System.Collec
- 数组实现Java 自定义Queue队列及应用Java 自定义队列Queue:队列的抽象数据类型就是一个容器,其中的对象排成一个序列,我们只能
- 什么是线程同步? 当使用多个线程来访问同一个数据时,非常容易出现线程安全问题(比如多个线程都在操作同一数据导致数据不一致),所以我们用同步机
- 前言:今年是我的第二个 1024 了 ,和我一起大声说出来,技术宅改变世界!!!本节主要介绍的是:SpringBoot 整合阿里 Druid
- 问题: 在win10系统中,使用IDEA 查看源码的时候,经常跳转代码,这样会让使用者感觉和方便,但是当你想要返回上次跳转的位置时,却不知道
- 业务现象代码中有一部分代码多次嵌套循环和数据处理,执行速度很慢解决方案通过多线程1、启用多线程private final static Ex
- 状态机机制状态机机制是一种常用的解决状态扭转问题的方法,通过定义状态以及状态之间的转移规则来控制状态的流转。对于订单系统,我们可以使用状态机
- Eclipse查看开发包jar里源代码的方法前言:最近我打算学习一下谷歌的类库Guava,下载了Guava-r09.jar包及其源码,为了可
- 本文实例讲述了C#禁用双击窗体图标关闭窗体的方法。分享给大家供大家参考。具体实现方法如下:[DllImport("user32.d
- 这篇文章主要介绍了Java如何实现支付宝电脑支付基于servlet版本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学
- 一、准备工作mybatis-plus作为mybatis的增强工具,它的出现极大的简化了开发中的数据库操作,但是长久以来,它的联表查询能力一直
- 反射反射定义对象可以通过反射获取他的类,类可以通过反射拿到所有⽅法(包括私有) 通过java语言中的反射机制可以操作字节码文件,可以读和修改
- 本文实例为大家分享了android点击按钮切换不同布局的具体代码,供大家参考,具体内容如下先上效果图:如图所示,实现点击下面的按钮切换不同的
- 概述HashTable是jdk 1.0中引入的产物,基本上现在很少使用了,但是会在面试中经常被问到,你都知道吗:HashTable底层的实现
- 实践过程效果代码public partial class Form1 : Form{ public Form1()
- Flutter Sizedbox 是一个 布局组件,用来给 child 添加 tight 约束的,也可以用来添加空白。width,heigh
- 本博客包含三个常用方法,用于盛开Android版人脸识别Demo中竖屏使用时送入yuv数据,但一直无法识别的情况。1.首先可以尝试顺时针旋转
- 本文实例为大家分享了Android实现信息弹出框的具体代码,供大家参考,具体内容如下layout下的dialog_common_layout
- 本文实例讲述了C#将制定目录文件名转换成大写的方法。分享给大家供大家参考。具体如下:using System;using System.IO