recyclerview的item实现动画效果控制textview高度刷新ui

本文介绍如何在RecyclerView的item中实现点击箭头后,通过动画控制TextView高度来展示或隐藏内容。首先在布局初始化时将TextView高度设为0,然后利用布局改变监听器获取一行的高度。接着,通过内容创建新的TextView获取所有行的高度。在RecyclerView的Adapter中,设置点击事件并通过回调接口处理点击逻辑。最终实现了一个平滑的动画效果,避免了简单的gone和visible切换带来的局限性。文章还提到在使用回调传递参数时遇到的问题,并提及项目采用MVP架构和静态数据资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.效果:点击箭头,实现一个动画效果弹出隐藏textview的内容.

2.准备环境

    sutdio 2.23    jdk 1.8    逍遥模拟器(或者android手机)

3.实现思路

    (1)界面布局初始化前textview高度是0,当界面初始化时候,根据布局改变监听器去获取textview的制定行高(我这里制定1行)

    (2)根据textview的内容content,我们new一个textview赋值content 拿到new_textview 的所有行高(即textview所有高)

    (3)设置recyclerview的item子控件监听,textview指定行高-所有行高切换(利用属性动画),同时改变箭头ui

4.code实现

    (1)recyclerview的adapter  onbindViewHolder()方法 获取指定行高,利用回调设置item子控件的点击事件

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
    RvViewHolder viewHolder = (RvViewHolder) holder;
    //拿到初始化tvDesc 的高度   b布局改变监听器
    //第一次显示界面的时候执行了onLayout方法,这时就会触发onGlobalLayout方法,
    final TextView tvDesc = viewHolder.tvDesc;
    tvDesc.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            //刚开始这时候我们的detail_desc还没有数据,所以获取高将会是0,所以我们一直监听到高有值再取消监听。
            tvDescHight = tvDesc.getHeight();
            if(tvDescHight > 0) {
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值